创建一个成熟的Viberbot。第二部分-首次联系或“ conversion_started”

向用户发送第一条消息-欢迎并签名


第一部分中,我们学习了如何启动入门程序,为我们的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_", #  Viber    -   "chat_hostname"
  "event": "conversation_started", #          
  "context": "fromlanding", #    UTM     
  "message_token": 5406893180055821524, #  
  "subscribed": false, #    ,   true   
  "timestamp": 1581161565470, # UNIXTIME 
  "type": "open", #  
  "user": {
    "api_version": 8,  #   API   . 
    "avatar": "https://media-direct.cdn.viber.com/avatar...", #      -   ,   
    "country": "RU", #       (UA-, BY-, IL-, MD - )
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "language": "ru", #      (  )
    "name": "Denis"#   Viber -      -     name  
  }
}


但是在大多数情况下,我们只对这5个领域感兴趣
{
  "context": "fromlanding", #      
  "subscribed": false,
   "user": {
    "country": "RU", #      
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "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':
            #print(viber)
            #print("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.2
Radio-miner

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


All Articles