Création d'un Viberbot à part entière sur Django 2 et l'API Viber REST. Première partie - Webhook

Installez Webhook pour que le robot fonctionne sur Viber et envoyez la première demande POST au messager principal


Sur la base de mon expérience dans le développement pour Viber et de nombreuses opinions partagées, je publie une série d'articles sur la création et le lancement de viberbot. Pour comprendre l'image complète dans son ensemble, nous travaillerons avec une API REST propre VIBER, sans aucun emballage.

Radio Viber s'est avéré trop non standard, nous allons donc créer un robot de dialogue classique ( dont plusieurs milliers ont été divorcés par télégramme ).

Dans le même temps, nous verrons tous les inconvénients et avantages de botviber et comprendrons: ce qui est plus facile d'être en Russie - botviber VS bottelegram, les principales différences entre le développement bot de ces plateformes.

image

Avec un ensemble de méthodes plus maigre que dans le panier - cependant, dans Viber, vous pouvez créer des interfaces UI beaucoup plus efficaces et ne pas vous limiter à la couleur gris terne des boutons de menu et des boutons en ligne.

L'article est plus destiné aux débutants qui n'ont pas réussi à gérer l'API Viber REST.

Dans un mois, 1-2 tutoriels par semaine, tous ceux qui le souhaitent apprendront à créer des robots sur le messager Viber, avec un panneau d'administration personnel, des outils de distribution de messages en masse, sans concepteurs ni plates-formes. Nous créons également une page de minilanding (comme les robots télégrammes) pour rechercher et promouvoir votre bot.

Je recommande d'étudier Django en parallèle, qui n'a pas encore commencé, et les caractéristiques de son travail dans les modes de développement et de production.

Pas assez de bot - alors commençons


1. Installez et exécutez Django> = 2.1 et Python> = 3.6.
créer l'application myviberbot en utilisant la commande standard du gestionnaire Django:

python manage.py startapp myviberbot

N'oubliez pas de l'ajouter au fichier settings.py dans cette section:

#    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', #    
]
#

Supposons que j'ai lié mon domaine HTTPS et que je souhaite installer webhook pour viber-bot sur:
yourdomain.ru/webhook2020 - Et vous changez yourdomain.ru en votre domaine, bien sûr.

Et nous allons gérer tous les événements dans la fonction def trx_bot () de myviberbot.views - mais plus à ce sujet ...

Tout d'abord, nous apporterons les corrections correspondantes au fichier urls.py dans la liste de son contenu complet:

# 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, 
#  ,   
    ]

Si vous n'approfondissez pas les subtilités de Django, ici, dans le code ci-dessus, nous avons envoyé absolument toutes les demandes (requête) à webhook2020 à la fonction trx_bot, qui se trouve dans le dossier du projet myviberbot dans le fichier views.py. Considérez-le ci-dessous.

# 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)

Après avoir reçu 200 OK de notre part, les serveurs vibrants backend sont prêts à travailler avec nous.

Vous verrez le message qui est venu à votre messager dans le chat de votre bot (fonction de dialogue ajoutée ou Chat 1to1 ajouté).

Mais comment envoyer une demande POST au backend Viber ou installer Webhook - cette question préoccupe beaucoup de gens habitués à travailler avec des télégrammes en utilisant la méthode get, mais ça va - nous lisons attentivement:

2. Je suis sûr qu'à ce stade, vous avez déjà reçu le jeton de bot ici et déployé l'application django sur l'hébergement ( VDS ou partagé ) ou dans l'environnement local (dans ce cas, le tunnel temporaire ngrok vous aidera),

a) Si nous testons le projet sur la machine locale, nous le démarrerons avec l'équipe de gestion:
python manage.py runserver

Après un démarrage réussi, nous attachons ngrok.

b) Et il existe de nombreuses façons de se lancer sur un hébergement - personnellement, j'utilise passager sur beget. Dans le cas de beget, mettez la version du conteneur avec php5.6 pas plus haut - c'est le conseil de begetovtsev.

Donc - l'application a commencé - mettez webhook


Quiconque sait comment utiliser le plug-in POSTMAN pour Chrome peut ignorer le paragraphe suivant et envoyer le POST pour le webhook directement depuis le navigateur.

Nous allons créer un fichier sur la machine locale avec n'importe quel nom, par exemple sethook.py, sans oublier la bibliothèque de requêtes (pip install request)

#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" -   ,
#    

Nous le démarrons avec la commande du répertoire de travail:
python sethook.py

C'est tout! Webhook est défini par la méthode POST. Vous voyez un message qui est venu à votre chat (fonction de dialogue ajoutée), ce qui signifie que le webhook est installé.

À suivre ...

Dans le prochain article, nous analyserons l'événement ["conversation_started"], pour le premier contact avec les utilisateurs et l'initialisation de l'interaction avec eux, vous découvrirez que votre viberbot connaît tous les utilisateurs et ce qu'il ne sait pas.

PARTIE 2:
Création d'un Viberbot à part entière sur Django 2 et l'API Viber REST. Deuxième partie - onversation_started

Materials:

Documentation de l'API REST viber
Django version 2.2
Radio-mineur

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


All Articles