Erstellen eines vollwertigen Viberbot. Teil zwei - erster Kontakt oder "convert_started"

Senden der ersten Nachricht an den Benutzer - Willkommen und Unterschreiben


Im ersten Teil haben wir gelernt, wie man einen Starter startet und einen Webhook für unser Botviber-Projekt installiert.

In diesem zweiten Abschnitt erfahren Sie, wie Sie die erste angezeigte Nachricht an unsere Benutzer senden, Links zur Suche erstellen und unseren Bot sowohl in ViberURL als auch in NoViberURL starten

Bild


Wir werden Links zum Bot bilden


1) Offline-QR - kann aus dem Administratorbereich des Viber- Partners heruntergeladen werden.

2) Link für Instant Messenger und Übertragung über ViberURL Messenger

viber://pa?chatURI=dinner&context=fromhabr

3) NoViberURL- Weiterleitungslink im Internet Es gibt viele solcher URL- Kürzungen - aber sie sehen alle wie Spam aus. Ich empfehle daher, Ihren eigenen Code aus drei PHP-Zeilen zu erstellen und die Datei auf Ihrem Hosting abzulegen. Hier ist der Inhalt der Datei foot.php

<?php
header ("Location: viber://pa?chatURI=dinner");
exit();

Grüße Botviber oder "Ereignis": "Konversationsstart"


Nach dem Öffnen des QR oder dem Klicken auf den Link zur Adresse unserer Anwendung von Viber (Jetty) -Servern kommen POST-Anforderungen mit einem Ereignis ("Ereignis": "Konversationsstart") an und ihr vollständiger Inhalt sieht folgendermaßen aus:

INCOMING PARAMETERS POST - oder JSON von 13 Feldern
{
  "chat_hostname": "SN-327_", #  Viber    -   "chat_hostname"
  "event": "conversation_started", #          
  "context": "fromlanding", #    UTM     
  "message_token": 5406893180055821524, #  
  "subscribed": false, #    ,   true   
  "timestamp": 1581161565470, # UNIXTIME 
  "type": "open", #  
  "user": {
    "api_version": 8,  #   API   . 
    "avatar": "https://media-direct.cdn.viber.com/avatar...", #      -   ,   
    "country": "RU", #       (UA-, BY-, IL-, MD - )
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "language": "ru", #      (  )
    "name": "Denis"#   Viber -      -     name  
  }
}


In den meisten Fällen interessieren uns jedoch nur diese 5 Bereiche
{
  "context": "fromlanding", #      
  "subscribed": false,
   "user": {
    "country": "RU", #      
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "name": "Denis"#   ,   .
  }
}


Und manchmal brauchen wir nur ein Feld
"Id": "J2k6sasdgghaazDeoXVYww =="

Dies ist die Haupt-Viber-ID des Benutzers, ein Analogon von chat_id im Telegramm.
Beachten Sie außerdem, dass im cart_id-Warenkorb der eine Messenger in allen Bots mit der Handynummer in allen Bots identisch ist und die ID der Stimmung wie ein Token ist und in einem Ihrer Bots eindeutig ist. In einem anderen Bot wird Ihre ID anders sein ...

Wir verarbeiten sie und antworten, um eine der drei Antworten wie im obigen Screenshot zu erhalten:
a) type = "text"
b) und hier sehen wir den klassischen Fall von type = "rich_media"
c) auf dem dritten Bildschirm Type = "keyboard"

Weitere Details zur Viber-REST-API Im Folgenden wird erläutert, wie Sie die erste Option erhalten

Wie wir bereits sehen, kann botviber für jedes Unternehmen oder einen Mini-Shop gebrandmarkt werden und Stile an Ihre Hauptwebsite anpassen

1) Um Benutzernachrichten in der Projektdatei myviberbot / views.py zu verarbeiten, nehmen Sie die folgenden Änderungen vor:


#

import requests #      
import json 
from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt

auth_token = '45df835d27d01f-cd2e7wetwerga18a8-9a7wert786234' #!     
url = 'https://chatapi.viber.com/pa/send_message'
headers = {'X-Viber-Auth-Token': auth_token}

#     
def sending(func):
    def wrapped(*args):
        return requests.post(url, json.dumps(func(*args)), headers=headers)
    return wrapped

#  
@sending
def send_text(agent, text, track=None):
    m = dict(receiver=agent, min_api_version=2, tracking_data=track, type="text", text=text)
    return m

@csrf_exempt
def trx_bot(request):
    if request.method == "POST":
        viber = json.loads(request.body.decode('utf-8'))
        if viber['event'] == 'conversation_started':
            print(" ")
            conversation(viber) #  -    .
        elif viber['event'] == 'webhook':
            #print(viber)
            #print("Webhook  ")
            return HttpResponse(status=200)
        else:
            print("  Webhook -   ,   POSTMAN") 
            return HttpResponse(status=500)
        return HttpResponse(status=200)


def conversation(viber):
    id = viber['user']['id']
    if viber['subscribed']:
	    send_text(id, '  ')
    else:
        send_text(id, '   ?\n\n   .      ...')


Starten Sie unser Django-Projekt neu.

Leider gibt „Rakuten Viber“ PA und der Community niemandem offizielle Seiten, Ausnahmen von großen Marken und Persönlichkeiten des öffentlichen Lebens, daher für SEO-Werbung und PR in sozialen Netzwerken usw. Ich empfehle, eine Mini-Landung zu erstellen - eine kleine Seite, auf die jeder von der Hauptseite oder anderen geht. Hier ein Beispiel für Ressourcen: Starten Sie Botviber erfolgreich. Fortsetzung folgt ... Im nächsten Artikel analysieren wir das Ereignis ["Nachricht"]. Zur Verarbeitung von Benutzernachrichten erfahren Sie, wie Sie einen Dialog führen, wie Sie die folgenden Nachrichten trennen und wie Sie botviber im Allgemeinen beibringen, zu verstehen, dass dies die folgenden sind. (Erstellen eines vollwertigen Viberbot auf Django 2 und der Viber-REST-API. Dritter Teil - Nachricht) Materialien: Dokumentation zur Viber-REST-API















Django Version 2.2
Radio-Miner

Source: https://habr.com/ru/post/undefined/


All Articles