рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд Viberbot рдмрдирд╛рдирд╛ред рднрд╛рдЧ рджреЛ - рдкрд╣рд▓рд╛ рд╕рдВрдкрд░реНрдХ рдпрд╛ "рд░реВрдкрд╛рдВрддрд░рдг_рд╕реНрдЯрд╛рд░реНрдЯ"

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ - рд╕реНрд╡рд╛рдЧрдд рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛


рдореЗрдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕реАрдЦрд╛ , рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрд░ рд▓рд╛рдВрдЪ рд╣рдорд╛рд░реЗ 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_", #  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 рдХрд╛рд░реНрдЯ рдореЗрдВ, рд╕рднреА рдмреЙрдЯреНрд╕ рдореЗрдВ рдПрдХ рдореИрд╕реЗрдВрдЬрд░ рд╕рднреА рдмреЙрдЯреНрд╕ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдирдВрдмрд░ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рд╡рд╛рдЗрдм рдХреА рдЖрдИрдбреА рдПрдХ рдЯреЛрдХрди рдХреА рддрд░рд╣ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдмреЙрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдПрдХ рдЕрдиреНрдп рдмреЙрдЯ рдореЗрдВ, рдЖрдкрдХреА рдЖрдИрдбреА рдЕрд▓рдЧ рд╣реЛрдЧреА ...

рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреАрди рдЙрддреНрддрд░реЛрдВ рдореЗрдВ рд╕реЗ
рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ 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':
            #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 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, "рд░рд╛рдХреБрдЯреЗрди рд╡рд╛рдЗрдмрд░" рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░рдореБрдЦ рдмреНрд░рд╛рдВрдбреЛрдВ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдкреАрдП рдФрд░ рд╕рдореБрджрд╛рдп рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреГрд╖реНрда рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдПрд╕рдИрдУ рдкреНрд░рдЪрд╛рд░ рдФрд░ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐ред рдореИрдВ рдПрдХ рдорд┐рдиреА-рд▓реИрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ - рдПрдХ рдЫреЛрдЯрд╛ рдкреГрд╖реНрда рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рд░ рдХреЛрдИ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдпрд╛ рдЕрдиреНрдп рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рдирдореВрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмреЙрдЯрд╡реАрдмрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ... рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛ ["рд╕рдВрджреЗрд╢"] рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдЖрдо рддреМрд░ рдкрд░ рдмреЙрдЯрд┐рд╡рд░ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдП рдХрд┐ рдпреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВред (Django 2 рдФрд░ Viber REST API рдкрд░ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд Viberbot рдмрдирд╛рдирд╛ред рднрд╛рдЧ рддреАрди - рд╕рдВрджреЗрд╢) рд╕рд╛рдордЧреНрд░реА: viber REST API рдкреНрд░рд▓реЗрдЦрди















Django рд╕рдВрд╕реНрдХрд░рдг 2.2
рд░реЗрдбрд┐рдпреЛ-рдЦрд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛

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


All Articles