安装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文件中:
DEBUG = True
ALLOWED_HOSTS = ['*']
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文件进行相应的更正:
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),
]
如果您不深入研究Django的精妙之处,则在上面的代码中,我们将对webhook2020的所有请求(请求)绝对发送到trx_bot函数,该函数位于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 ")
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应用程序部署在托管服务器(VDS或Shared)上或本地环境中(在这种情况下,ngrok临时隧道会有所帮助),a)如果我们正在本地计算机上测试项目,则将由经理团队启动它:python manage.py runserver成功启动之后,我们将附加ngrok。b)有很多方法可以在主机上启动-就个人而言,我是根据生来使用旅客的。对于beget,请将php5.6容器的版本设置为不更高-这是来自begetovtsev的建议。所以-应用程序已经启动-将webhook
知道如何在Chrome中使用POSTMAN插件的人都可以跳过下一段,直接从浏览器发送Webhook的POST。我们将在本地计算机上创建任何名称的文件,例如sethook.py,不要忘记请求库(pip安装请求)
import requests
import json
auth_token = 'xxxxxxxxx-ttttttttttttttttt-wwwwwwwwwwww'
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'])
r = requests.post(hook, json.dumps(sen), headers=headers)
print(r.json())
我们从工作目录中的命令启动它:python sethook.py就是这样!Webhook由POST方法设置。您会看到一条聊天消息(已添加对话框功能),这意味着已安装webhook。待续...在下一篇文章中,我们将分析事件[“ conversation_started”],用于与用户的初始联系以及与用户的交互的初始化,您将发现viberbot知道所有用户,而他不知道。第2部分:在Django 2和Viber REST API上创建完整的Viberbot。第二部分-入门材料:viber REST APIDjango 2.2 Radio-miner的文档