Erstellen eines vollwertigen Viberbot auf Django 2 und der Viber REST-API. Erster Teil - Webhook

Installieren Sie Webhook for Bot, damit es mit Viber funktioniert, und senden Sie die erste POST-Anforderung an den Backend-Messenger


Basierend auf meiner Erfahrung in der Entwicklung für Viber und vielen gemischten Meinungen veröffentliche ich eine Reihe von Artikeln zum Erstellen und Starten von Viberbot. Um das Gesamtbild zu verstehen, arbeiten wir mit einem sauberen REST-API-VIBER ohne Wrapper.

Radio Viber hat sich als zu unüblich erwiesen, daher werden wir einen klassischen Dialog-Bot erstellen (von dem viele Tausende per Telegramm geschieden wurden ).

Gleichzeitig werden wir alle Nachteile und Vorteile von Botviber erkennen und verstehen: Was in Russland einfacher zu sein ist - Botviber VS Bottelegram, die Hauptunterschiede zwischen der Bot-Entwicklung dieser Plattformen.

Bild

Mit einer spärlicheren Anzahl von Methoden als im Warenkorb können Sie in Viber jedoch viel effektivere Benutzeroberflächen erstellen und sich nicht auf die matte graue Farbe von Menüschaltflächen und Inline-Schaltflächen beschränken.

Der Artikel richtet sich eher an Anfänger, die es nicht geschafft haben, mit der Viber REST-API umzugehen.

Innerhalb eines Monats, 1-2 Tutorials pro Woche, wird jeder, der möchte, lernen, wie man Bots auf dem Viber Messenger erstellt, mit einem persönlichen Admin-Panel, Tools zur Verteilung von Massennachrichten, ohne Designer und Plattformen. Wir erstellen auch eine Minilanding-Seite (wie Telegramm-Bots), um Ihren Bot zu suchen und zu bewerben.

Ich empfehle, Django parallel zu studieren, der noch nicht begonnen hat, und die Merkmale seiner Arbeit in Entwicklungs- und Produktionsmodi.

Nicht genug Bot - dann fangen wir an


1. Installieren Sie Django> = 2.1 und Python> = 3.6 und führen Sie es aus.
Erstellen Sie eine myviberbot-Anwendung mit dem Standardbefehl Django Manager:

python manage.py startapp myviberbot

Vergessen Sie nicht, es der Datei settings.py in diesem Abschnitt hinzuzufügen:

#    settings.py 

DEBUG = True

ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myviberbot', #    
]
#

Angenommen, ich habe meine HTTPS-Domain verlinkt und möchte Webhook für viber-bot installieren unter:
yourdomain.ru/webhook2020 - Und Sie ändern yourdomain.ru natürlich in Ihre Domain.

Und wir werden alle Ereignisse in der Funktion def trx_bot () von myviberbot.views behandeln - aber mehr dazu ...

Zunächst werden wir die entsprechenden Korrekturen an der Datei urls.py in der Liste vornehmen, deren vollständiger Inhalt:

# urls.py
from django.contrib import admin
from django.urls import path
from myviberbot.views import trx_bot
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('webhook2020', trx_bot), #url    - webhook2020, 
#  ,   
    ]

Wenn Sie nicht tief in die Feinheiten von Django eintauchen - hier im obigen Code haben wir absolut alle Anfragen (Anfragen) an webhook2020 an die Funktion trx_bot gesendet, die sich im myviberbot-Projektordner in der Datei views.py befindet. Betrachten Sie es unten.

# views.py   myviberbot

from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt

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

Nachdem Sie 200 OK von uns erhalten haben, können die Backend-Viber-Server mit uns zusammenarbeiten.

Sie sehen die Nachricht, die zu Ihrem Messenger kam, im Chat Ihres Bots (Dialogfunktion hinzugefügt oder Chat 1 bis 1 hinzugefügt).

Aber wie man eine POST-Anfrage an das Backend Viber sendet oder Webhook installiert - diese Frage beunruhigt viele, die es gewohnt sind, mit Telegramm mit der get-Methode zu arbeiten, aber es ist in Ordnung - wir lesen sorgfältig weiter:

2. Ich bin sicher, dass Sie zu diesem Zeitpunkt bereits das Bot-Token hier erhalten haben und die Django-Anwendung auf dem Hosting ( VDS oder Shared ) oder in der lokalen Umgebung bereitgestellt (in diesem Fall hilft der temporäre Tunnel von ngrok),

a) Wenn wir das Projekt auf dem lokalen Computer testen, starten wir es mit dem Manager-Team:
python manage.py runserver

Nach einem erfolgreichen Start fügen wir ngrok hinzu.

b) Und es gibt viele Möglichkeiten, ein Hosting zu starten - ich persönlich benutze Passenger on Beget. Im Falle von beget setzen Sie die Version des Containers mit php5.6 nicht höher - dies ist ein Rat von begetovtsev.

Also - die Anwendung hat gestartet - Webhook setzen


Wer weiß, wie man das POSTMAN-Plugin für Chrome verwendet, kann den nächsten Absatz überspringen und den POST für den Webhook direkt vom Browser aus senden.

Wir werden auf dem lokalen Computer eine Datei mit einem beliebigen Namen erstellen, z. B. sethook.py, wobei die Anforderungsbibliothek nicht vergessen wird (Pip-Installationsanforderungen).

#sethook
import requests
import json
auth_token = 'xxxxxxxxx-ttttttttttttttttt-wwwwwwwwwwww' #       #.2
hook = 'https://chatapi.viber.com/pa/set_webhook'
headers = {'X-Viber-Auth-Token': auth_token}


sen = dict(url='https://yourdomain.ru/webhook2020',
           event_types = ['unsubscribed', 'conversation_started', 'message', 'seen', 'delivered'])
# sen -  body     backend  viber
#seen, delivered -  ,     ,
#         ,   )

r = requests.post(hook, json.dumps(sen), headers=headers)
# r -       viber 
print(r.json())
#   print    "status_message":"ok" -   ,
#    

Wir starten es mit dem Befehl aus dem Arbeitsverzeichnis:
python sethook.py

Das war's! Webhook wird durch die POST-Methode festgelegt. Sie sehen eine Nachricht, die zu Ihrem Chat kam (Dialogfunktion hinzugefügt), was bedeutet, dass Webhook installiert ist.

Fortsetzung

folgt ... Im nächsten Artikel analysieren wir das Ereignis ["gespräch_started"] auf den ersten Kontakt mit Benutzern und die Initialisierung der Interaktion mit ihnen. Sie werden feststellen, dass Ihr Viberbot über alle Benutzer Bescheid weiß und was er nicht weiß.

TEIL 2:
Erstellen eines vollwertigen Viberbot auf Django 2 und der Viber REST-API. Teil 2 - versonversation_started

Materials:

Dokumentation der Viber-REST-API
Django Version 2.2
Radio-Miner

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


All Articles