рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ - рд╕реНрд╡рд╛рдЧрдд рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛
рдореЗрдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕реАрдЦрд╛ , рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрд░ рд▓рд╛рдВрдЪ рд╣рдорд╛рд░реЗ botviber рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП webhook рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВредрдЗрд╕ 2 рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдП рдЧрдП рдкрд╣рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ, рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВ, рджреЛрдиреЛрдВ ViberURL рдФрд░ NoViberURL рдХреЗ рдЕрдВрджрд░
рд╣рдо рдмреЙрдЯ рдХреЗ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВрдЧреЗ
1) рдСрдлрд▓рд╛рдЗрди рдХреНрдпреВрдЖрд░ - рдЗрд╕реЗ рд╡рд╛рдЗрдмрд░ рдПрдлрд┐рд▓рд┐рдПрдЯ рдПрдбрдорд┐рди рдПрд░рд┐рдпрд╛2 рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ) рд╡рд┐рдмрд░реБрд░ рдореИрд╕реЗрдВрдЬрд░ рдФрд░ рдореИрд╕реЗрдВрдЬрд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХviber://pa?chatURI=dinner&context=fromhabr
3) NoViberURL рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рд▓рд┐рдВрдХ рдореЗрдВ рдХрдИ рдРрд╕реЗ URL рд╢рд╛рд░реНрдЯрдирд░ рд╣реИрдВ - рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рд╕реНрдкреИрдо рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ PHP рдХреА рддреАрди рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЕрдкрдирд╛ рдХреЛрдб рдмрдирд╛рдиреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдкрдХреЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рдкреИрд░ рдХреА .php рдлрд╝рд╛рдЗрд▓ рд╣реИред<?php
header ("Location: viber://pa?chatURI=dinner");
exit();
рдмрдзрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдмреЙрдЯрд╡реАрдмрд░ рдпрд╛ "рдЗрд╡реЗрдВрдЯ": "рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк_рд╕реНрдЯрд╛рд░реНрдЯ"
Viber (рдЬреЗрдЯреНрдЯреА) рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдЖрд░ рдЦреЛрд▓рдиреЗ рдпрд╛ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдШрдЯрдирд╛ ("рдШрдЯрдирд╛": "рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк_рд╕реНрдЯрд╛рд░реНрдЯ") рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдз рдЖрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдкреВрд░реА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:13 рд╕реЗ рдЕрдзрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкреЛрд╕реНрдЯрдорд╛рд░реНрдЯрдо рдкреЛрд╕реНрдЯрд░реНрд╕ рдпрд╛ рдЬреЙрдиреНрд╕рди{
"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 рдХрд╛рд░реНрдЯ рдореЗрдВ, рд╕рднреА рдмреЙрдЯреНрд╕ рдореЗрдВ рдПрдХ рдореИрд╕реЗрдВрдЬрд░ рд╕рднреА рдмреЙрдЯреНрд╕ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдирдВрдмрд░ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рд╡рд╛рдЗрдм рдХреА рдЖрдИрдбреА рдПрдХ рдЯреЛрдХрди рдХреА рддрд░рд╣ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдмреЙрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдПрдХ рдЕрдиреНрдп рдмреЙрдЯ рдореЗрдВ, рдЖрдкрдХреА рдЖрдИрдбреА рдЕрд▓рдЧ рд╣реЛрдЧреА ...
рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреАрди рдЙрддреНрддрд░реЛрдВ рдореЗрдВ рд╕реЗрдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ a) рдЯрд╛рдЗрдк = "рдЯреЗрдХреНрд╕реНрдЯ"b) рдХреЗ рдКрдкрд░ рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЯрд╛рдЗрдк рдХрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЗрд╕ рджреЗрдЦрддреЗ рд╣реИрдВ = "rich_media"c) рддреАрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдЯрд╛рдЗрдк = "рдХреАрдмреЛрд░реНрдб" viber REST APIрдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг , рдФрд░ рдиреАрдЪреЗ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рд╡реНрдпрд╡рд╕рд╛рдп рдпрд╛ рдорд┐рдиреА-рд╢реЙрдк рдХреЗ рд▓рд┐рдП рдмреЛрдЯрд╡реАрдмрд░ рдХреЛ рдмреНрд░рд╛рдВрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрдкрдХреЗ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдкрд░ рджрд░реНрдЬреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рднреАред
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 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВредрджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, "рд░рд╛рдХреБрдЯреЗрди рд╡рд╛рдЗрдмрд░" рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░рдореБрдЦ рдмреНрд░рд╛рдВрдбреЛрдВ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдкреАрдП рдФрд░ рд╕рдореБрджрд╛рдп рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреГрд╖реНрда рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдПрд╕рдИрдУ рдкреНрд░рдЪрд╛рд░ рдФрд░ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐ред рдореИрдВ рдПрдХ рдорд┐рдиреА-рд▓реИрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ - рдПрдХ рдЫреЛрдЯрд╛ рдкреГрд╖реНрда рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рд░ рдХреЛрдИ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдпрд╛ рдЕрдиреНрдп рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рдирдореВрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмреЙрдЯрд╡реАрдмрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ... рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛ ["рд╕рдВрджреЗрд╢"] рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдЖрдо рддреМрд░ рдкрд░ рдмреЙрдЯрд┐рд╡рд░ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдП рдХрд┐ рдпреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВред (Django 2 рдФрд░ Viber REST API рдкрд░ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд Viberbot рдмрдирд╛рдирд╛ред рднрд╛рдЧ рддреАрди - рд╕рдВрджреЗрд╢) рд╕рд╛рдордЧреНрд░реА: viber REST API рдкреНрд░рд▓реЗрдЦрди
Django рд╕рдВрд╕реНрдХрд░рдг 2.2рд░реЗрдбрд┐рдпреЛ-рдЦрд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛