Creación de un Viberbot completo en Django 2 y la API REST de Viber. Primera parte - Webhook

Instale Webhook para que el bot funcione en viber y envíe la primera solicitud POST al mensajero del backend


Basado en mi experiencia en el desarrollo para Viber y en muchas opiniones encontradas, publico una serie de artículos sobre la creación y el lanzamiento de viberbot. Para entender la imagen completa en su conjunto, trabajaremos con un REST API VIBER limpio, sin envoltorios.

Radio Viber demostró ser demasiado no estándar, por lo que crearemos un bot de diálogo clásico (del cual muchos miles se han divorciado en telegrama ).

Al mismo tiempo, veremos todas las desventajas y ventajas de botviber y entenderemos: qué es más fácil estar en Rusia: botviber VS bottelegram, las principales diferencias entre el desarrollo de bot de estas plataformas.

imagen

Con un conjunto de métodos más exiguo que en el carrito, sin embargo, en Viber puede crear interfaces de interfaz de usuario mucho más efectivas y no limitarse al color gris opaco de los botones de menú y los botones en línea.

El artículo está más dirigido a los principiantes que no lograron lidiar con la API REST de Viber.

Dentro de un mes, 1-2 tutoriales por semana, cualquiera que quiera aprenderá a crear bots en el mensajero de Viber, con un panel de administración personal, herramientas de distribución de mensajes masivos, sin diseñadores ni plataformas. También creamos una página de minilanding (como bots de telegramas) para buscar y promocionar su bot.

Recomiendo estudiar Django en paralelo, que aún no ha comenzado, y las características de su trabajo en los modos de desarrollo y producción.

No es suficiente bot, entonces comencemos


1. Instale y ejecute Django> = 2.1 y Python> = 3.6.
cree la aplicación myviberbot usando el comando estándar del administrador de Django:

python manage.py startapp myviberbot

No olvide agregarlo al archivo settings.py en esta sección:

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

Supongamos que vinculo mi dominio HTTPS y quiero instalar webhook para viber-bot en:
yourdomain.ru/webhook2020 - Y usted cambia yourdomain.ru a su dominio, por supuesto.

Y manejaremos todos los eventos en la función def trx_bot () desde myviberbot.views, pero más sobre esto ...

Primero que nada, haremos las correcciones correspondientes al archivo urls.py en el listado de su contenido completo:

# 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 no profundiza en las sutilezas de Django, aquí, en el código anterior, enviamos absolutamente todas las solicitudes (solicitud) a webhook2020 a la función trx_bot, que se encuentra en la carpeta del proyecto myviberbot en el archivo views.py. Considéralo a continuación.

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

Después de recibir 200 OK de nuestra parte, los servidores de backend viber están listos para trabajar con nosotros.

Verá el mensaje que llegó a su messenger en el chat de su bot (función de diálogo agregada o Chat 1to1 agregado).

Pero cómo enviar una solicitud POST al backend Viber o instalar Webhook, esta pregunta preocupa a muchos de los que están acostumbrados a trabajar con Telegram usando el método get, pero está bien, seguimos leyendo cuidadosamente:

2. Estoy seguro de que en este punto, ya ha recibido el token bot aquí e implementó la aplicación django en el hosting ( VDS o Shared ) o en el entorno local (en este caso, el túnel temporal ngrok ayudará),

a) Si estamos probando el proyecto en la máquina local, lo comenzaremos con el equipo administrador:
python manage.py runserver

Después de un comienzo exitoso, adjuntamos ngrok.

b) Y hay muchas maneras de lanzar en un hosting; personalmente, uso el pasajero engendrado. En el caso de beget, coloque la versión del contenedor con php5.6 no superior; este es el consejo de begetovtsev.

Entonces, la aplicación ha comenzado, pon webhook


Quien sepa cómo usar el complemento POSTMAN para Chrome puede omitir el siguiente párrafo y enviar la POST para el webhook directamente desde el navegador.

Crearemos un archivo en la máquina local con cualquier nombre, por ejemplo sethook.py, sin olvidar la biblioteca de solicitudes (solicitudes de instalación de pip)

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

Comenzamos con el comando desde el directorio de trabajo:
python sethook.py ¡

Eso es! Webhook se establece mediante el método POST. Verá un mensaje que llegó a su chat (función de diálogo agregada), lo que significa que está instalado el webhook.

Continuará ...

En el próximo artículo analizaremos el evento ["conversación_iniciada"], para el contacto inicial con los usuarios y la inicialización de la interacción con ellos, descubrirá que su viberbot sabe acerca de todos los usuarios y lo que él no sabe.

PARTE 2:
Creación de un Viberbot completo en Django 2 y la API REST de Viber. Segunda parte -

Materiales de iniciación

de la conversación : Documentación del viber REST API
Django versión 2.2
Radio-miner

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


All Articles