viber://pa?chatURI=dinner&context=fromhabr
<?php
header ("Location: viber://pa?chatURI=dinner");
exit();
{
"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 не существует
}
}
{
"context": "fromlanding", # Для анализа эффекта рекламных кампаний
"subscribed": false,
"user": {
"country": "RU", # Если проект глобальный страна нам пригодиться
"id": "J2k6sasdgghaazDeoXVYww==", # ID будем сохранять в БД
"name": "Denis" № #Имя пользователя можно сохранить, если оно есть.
}
}
И, прошу заметить, что в телеге chat_id один по всей сети мессенджера во всех всех ботах — как мобильный номер, а у вайбер id — он как токен и уникален в пределах одного вашего бота. В другом боте ваш id станет другим…
Как мы уже видим botviber можно забрендировать под любой бизнес либо мини магазинчик, также подогнать стили под ваш основной сайт
#
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Зависит от ваших идей. Отправь мне что угодно и присоединяйся...')
К сожалению, не доступен сервер mySQL