在Django 2和Viber REST API上创建完整的Viberbot。第一部分-Webhook

安装Webhook for bot以在viber上运行并将第一个POST请求发送到后端Messenger


基于我为Viber开发的经验和许多不同的观点,我发表了有关创建和启动viberbot的一系列文章。为了从整体上了解整个情况,我们将使用没有任何包装的干净的REST API VIBER。

事实证明Radio Viber太不规范了,因此我们将创建一个经典的对话机器人(其中有成千上万的人已通过电报离婚)。

同时,我们将看到botviber的所有弊端和优势,并了解:在俄罗斯更容易实现的是-botviber VS Bottelegram,这些平台的bot开发之间的主要区别。

图片

使用的方法集比购物车中的方法少得多-但是,在Viber中,您可以创建更有效的UI界面,而不必局限于菜单按钮和嵌入式按钮灰色

本文的目标读者是那些初次接触Viber REST API的初学者。

在一个月内(每周1-2个教程),每个想要学习的人都将学习如何在Viber Messenger上创建Bot,并使用个人管理面板,批量消息分发工具,而无需任何设计师和平台。我们还会创建一个微型登陆页面(例如电报机器人)来搜索和推广您的机器人。

我建议并行学习尚未开始的Django,以及他在开发和生产模式下的工作特点。

没有足够的机器人-那么让我们开始吧


1.安装并运行Django> = 2.1和Python> = 3.6。
使用标准Django管理器命令创建myviberbot应用程序:

python manage.py startapp myviberbot

不要忘记将其添加到本节的settings.py文件中:

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

假设我链接了我的HTTPS域,并且想在以下位置安装vih-bot的webhook:
yourdomain.ru/webhook2020-当然,您将yourdomain.ru更改为您的域。

并且,我们将从myviberbot.views处理def trx_bot()函数中的所有事件-但更多信息……

首先,我们将对清单中所有内容的urls.py文件进行相应的更正:

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

如果您不深入研究Django的精妙之处,则在上面的代码中,我们将对webhook2020的所有请求(请求)绝对发送到trx_bot函数,该函数位于views.py文件的myviberbot项目文件夹中。请在下面考虑。

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

在收到我们的200 OK之后,后端viber服务器已准备好与我们合作。

您会在漫游器的聊天室中看到传递给您的Messenger的消息(添加了对话功能或添加了聊天1to1)。

但是如何将POST请求发送到后端Viber或安装Webhook-这个问题让许多习惯使用get方法处理电报的人感到担忧,但是没关系-我们仔细阅读:

2.我确定到此为止,您已经在这里收到了bot令牌并将django应用程序部署在托管服务器(VDSShared)上或本地环境中(在这种情况下,ngrok临时隧道会有所帮助),

a)如果我们正在本地计算机上测试项目,则将由经理团队启动它:
python manage.py runserver

成功启动之后,我们将附加ngrok。

b)有很多方法可以在主机上启动-就个人而言,我是根据生来使用旅客的。对于beget,请将php5.6容器的版本设置为不更高-这是来自begetovtsev的建议。

所以-应用程序已经启动-将webhook


知道如何在Chrome中使用POSTMAN插件的人都可以跳过下一段,直接从浏览器发送Webhook的POST。

我们将在本地计算机上创建任何名称的文件,例如sethook.py,不要忘记请求库(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" -   ,
#    

我们从工作目录中的命令启动它:
python sethook.py

就是这样!Webhook由POST方法设置。您会看到一条聊天消息(已添加对话框功能),这意味着已安装webhook。

待续...

在下一篇文章中,我们将分析事件[“ conversation_started”],用于与用户的初始联系以及与用户的交互的初始化,您将发现viberbot知道所有用户,而他不知道。

第2部分:
在Django 2和Viber REST API上创建完整的Viberbot。第二部分-入门

材料:

viber REST API
Django 2.2 Radio-miner的文档

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


All Articles