向用户发送第一条消息-欢迎并签名
在第一部分中,我们学习了如何启动入门程序,为我们的botviber项目安装webhook。在第二部分中,我们将学习如何在ViberURL和NoViberURL中将显示的第一条消息发送给用户,创建搜索链接并启动我们的机器人。
我们将形成指向机器人的链接
1)离线QR-可以从viber会员管理区域下载2)ViberURL Messenger和Messenger转移的链接viber://pa?chatURI=dinner&context=fromhabr
3)Internet上的NoViberURL重定向链接有很多这样的URL缩短器-但它们看起来都像垃圾邮件,因此我建议使用三行PHP创建自己的代码并将其放在您的主机上,这是foot.php文件的内容<?php
header ("Location: viber://pa?chatURI=dinner");
exit();
问候botviber或“事件”:“ conversation_started”
在打开QR或从Viber(Jetty)服务器访问指向我们应用程序地址的链接之后,带有事件(“事件”:“ conversation_started”)的POST请求到达,其完整内容如下所示:包含参数的POST-或13个字段的JSON{
"chat_hostname": "SN-327_",
"event": "conversation_started",
"context": "fromlanding",
"message_token": 5406893180055821524,
"subscribed": false,
"timestamp": 1581161565470,
"type": "open",
"user": {
"api_version": 8,
"avatar": "https://media-direct.cdn.viber.com/avatar...",
"country": "RU",
"id": "J2k6sasdgghaazDeoXVYww==",
"language": "ru",
"name": "Denis" №
}
}
但是在大多数情况下,我们只对这5个领域感兴趣{
"context": "fromlanding",
"subscribed": false,
"user": {
"country": "RU",
"id": "J2k6sasdgghaazDeoXVYww==",
"name": "Denis" №
}
}
有时我们只需要一个领域“ Id”:“ J2k6sasdgghaazDeoXVYww ==”
这是用户的主要Viber标识符,类似于电报中的chat_id。而且,请注意,在chat_id购物车中,整个网络上所有漫游器都有一个Messenger(例如移动电话号码和氛围中的id),就像令牌一样,并且在您的其中一个漫游器中是唯一的。在另一个机器人中,您的ID将有所不同...
我们对它们进行处理并得到答案,如上面的屏幕快照所示,这是三个答案之一:a)type =“ text”b),在这里我们看到类型=“ rich_media”的经典案例c)在第三个屏幕上Type =“ keyboard”关于viber REST API的更多详细信息,下面我们将考虑如何获得第一个选项正如我们已经看到的,botviber可以为任何企业或迷你商店贴牌,也可以根据您的主要网站定制样式
1)处理myviberbot / views.py项目文件中的用户消息,进行更改:
import requests
import json
from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt
auth_token = '45df835d27d01f-cd2e7wetwerga18a8-9a7wert786234'
url = 'https://chatapi.viber.com/pa/send_message'
headers = {'X-Viber-Auth-Token': auth_token}
def sending(func):
def wrapped(*args):
return requests.post(url, json.dumps(func(*args)), headers=headers)
return wrapped
@sending
def send_text(agent, text, track=None):
m = dict(receiver=agent, min_api_version=2, tracking_data=track, type="text", text=text)
return m
@csrf_exempt
def trx_bot(request):
if request.method == "POST":
viber = json.loads(request.body.decode('utf-8'))
if viber['event'] == 'conversation_started':
print(" ")
conversation(viber)
elif viber['event'] == 'webhook':
return HttpResponse(status=200)
else:
print(" Webhook - , POSTMAN")
return HttpResponse(status=500)
return HttpResponse(status=200)
def conversation(viber):
id = viber['user']['id']
if viber['subscribed']:
send_text(id, ' ')
else:
send_text(id, ' ?\n\n . ...')
重新启动我们的Django项目。不幸的是,“ Rakuten Viber”没有将PA和社区的官方页面提供给任何人,主要品牌和公众人物除外,因此,对于社交网络上的SEO推广和PR等。我建议创建一个迷你登陆平台-每个人都可以从主站点或其他站点访问的小页面。这是资源示例:
成功启动botviber。
待续... 在下一篇文章中,我们将分析事件[“ message”],为了处理用户消息,您将学习如何进行对话,如何分隔以下消息,以及如何教导botviber理解以下内容。
(在Django 2和Viber REST API上创建完整的Viberbot。第三部分-消息)
资料:viber REST API文档
Django 2.2Radio-miner