Criando um Viberbot completo no Django 2 e na API Riber do Viber. Parte Um - Webhook

Instale o Webhook for bot para funcionar no viber e envie a primeira solicitação POST para o messenger de back-end


Com base na minha experiência no desenvolvimento para o Viber e em muitas opiniões contraditórias, publico uma série de artigos sobre a criação e o lançamento do viberbot. Para entender a imagem completa como um todo, trabalharemos com uma API REST VIBER limpa, sem nenhum wrapper.

O Radio Viber provou ser muito fora do padrão; portanto, criaremos um bot de diálogo clássico (dos quais muitos milhares se divorciaram em telegrama ).

Ao mesmo tempo, veremos todas as desvantagens e vantagens do botviber e entenderemos: o que é mais fácil na Rússia - botviber VS bottelegram, as principais diferenças entre o desenvolvimento bot dessas plataformas.

imagem

Com um conjunto de métodos mais escasso do que no carrinho - no entanto, no Viber, você pode criar interfaces de interface do usuário muito mais eficazes e não se limitar à cor cinza opaca dos botões de menu e dos botões embutidos.

O artigo é mais direcionado a iniciantes que não conseguiram lidar com a API REST do Viber.

Dentro de um mês, um ou dois tutoriais por semana, quem quiser aprender como criar bots no Viber messenger, com um painel de administração pessoal, ferramentas de distribuição de mensagens em massa, sem designers e plataformas. Também criamos uma página de visualização (como bots de telegrama) para procurar e promover seu bot.

Eu recomendo estudar o Django em paralelo, que ainda não começou, e os recursos de seu trabalho nos modos de desenvolvimento e produção.

Bot insuficiente - então vamos começar


1. Instale e execute o Django> = 2.1 e o Python> = 3.6.
crie o aplicativo myviberbot usando o comando padrão do gerenciador do Django:

python manage.py startapp myviberbot

Não se esqueça de adicioná-lo ao arquivo settings.py nesta seção:

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

Suponha que eu vinculei meu domínio HTTPS e desejo instalar o webhook para o viber-bot em:
seudominio.ru/webhook2020 - E você muda seudominio.ru para o seu domínio, é claro.

E trataremos de todos os eventos na função def trx_bot () do myviberbot.views - mas mais sobre isso ...

Antes de tudo, faremos as correções correspondentes ao arquivo urls.py na lista com seu conteúdo 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, 
#  ,   
    ]

Se você não se aprofundar nas sutilezas do Django, aqui, no código acima, enviamos absolutamente todas as solicitações (solicitação) para webhook2020 para a função trx_bot, que está localizada na pasta do projeto myviberbot no arquivo views.py. Considere-o abaixo.

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

Depois de receber 200 OK de nós, os servidores back-end do Viber estão prontos para trabalhar conosco.

Você verá a mensagem que chegou ao seu messenger no bate-papo do seu bot (função de diálogo adicionada ou Chat 1to1 adicionado).

Mas como enviar uma solicitação POST para o Viber back-end ou instalar o Webhook - essa pergunta preocupa muitos que estão acostumados a trabalhar com telegrama usando o método get, mas tudo bem -, lemos atentamente:

2. Estou certo de que, neste momento, você já recebeu o token de bot aqui e implantamos o aplicativo django na hospedagem ( VDS ou compartilhada ) ou no ambiente local (nesse caso, o túnel temporário ngrok ajudará),

a) Se estiver testando o projeto na máquina local, iniciaremos com a equipe do gerente:
python manage.py runserver

Após um início bem-sucedido, anexamos o ngrok.

b) E existem várias maneiras de iniciar uma hospedagem - pessoalmente, eu uso passageiros no início. No caso de beget, coloque a versão do contêiner com php5.6 não superior - este é o conselho de begetovtsev.

Então - o aplicativo foi iniciado - coloque webhook


Quem sabe como usar o plug-in POSTMAN para Chrome pode pular o próximo parágrafo e enviar o POST para o webhook diretamente do navegador.

Criaremos um arquivo na máquina local com qualquer nome, por exemplo, sethook.py, sem esquecer a biblioteca de solicitações (solicitações de instalação do 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" -   ,
#    

Começamos com o comando no diretório de trabalho:
python sethook.py

É isso! O Webhook é definido pelo método POST. Você vê uma mensagem que chegou ao seu bate-papo (função de Diálogo adicionada), o que significa que o webhook está instalado.

Para continuar ...

No próximo artigo, analisaremos o evento ["dialog_started"], para o contato inicial com os usuários e a inicialização da interação com eles, você descobrirá que o seu Viberbot sabe sobre todos os usuários e o que ele não sabe.

PARTE 2:
Criando um Viberbot completo no Django 2 e na API Riber do Viber. Parte Dois -

Materiais de Conversão :

Documentação do viber API REST API
Django versão 2.2
Radio-miner

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


All Articles