img

Интеграция Asterisk и VK через API

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Работаете с IP – АТС Asterisk? Тогда этот материал для вас. Говорить будем про отправку уведомлений в VK (Вконтакте) при входящем звонке. От слов к делу.


Получаем access_token

Первым делом, перейдите Developers раздел VK. В хедере (верхнем меню навигации) нажмите Мои приложения после чего нажмите Создать приложение:

Настройка приложения в API VK
  • Название - дайте имя для вашего аппликейшна. Например, Asterisk;
  • Платформа - выбираем Standalone-приложение;

Переходим в раздел настроек созданного приложения. Копируем ID приложения, как показано на рисунке ниже:

Получение ID приложения VK API

Отлично. Теперь скопируйте ссылку ниже:

https://oauth.vk.com/authorize?client_id=1234567&scope= offline,messages&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.37&response_type=token

Предварительно замените client_id на ваше значение, полученное ранее (ID приложения). VK API спросит разрешения на доступ к некоторым данным:

Получение access_token VK API

Если все ОК, то VK вернет нам токен:

Сохраняем access_token Вконтакте
Если вы столкнулись с ошибкой вида «{"error":"invalid_request","error_description":"Security Error"}», то перелогиньтесь в вашей учетной записи в VK и повторите попытку

Сохраняем значение и переходим к настройке скрипта на стороне Asterisk.


Адаптация на Asterisk

Реализацию скрипта сделаем на .php. Создайте файл asteriskvk.php и наполните его следующим содержимым:

#!/usr/bin/php -q
<?php
require('phpagi.php'); 
$agi = new AGI(); 
$message = "Сейчас поступит звонок с номера: ";
$message .= $agi->request['agi_callerid'];
$id = "ID получателя сообщения";
$token = "Токен";
function send($id , $message, $token)
{
    $url = 'https://api.vk.com/method/messages.send';
    $params = array(
        'user_id' => $id,
        'message' => $message,
        'access_token' => $token,
        'v' => '5.37',
    );
     $result = file_get_contents($url, false, stream_context_create(array(
        'http' => array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => http_build_query($params)
        )
    )));
}
send($id, $message, $token);
Скачать скрипт

В скрипте вам необходимо поменять следующие переменные:

  • $id - идентификатор пользователя, которому будет отправлено сообщение. Помимо user_id, это может быть ID группового чата;
  • $token - API - токен, который вы получили ранее;

Сохраняйте файл и загрузите в директорию /var/lib/asterisk/agi-bin/ после чего дайте следующие команды в консоли сервера:

chmod 755 /var/lib/asterisk/agi-bin/asteriskvk.php 
chown asterisk:asterisk /var/lib/asterisk/agi-bin/asteriskvk.php 
dos2unix /var/lib/asterisk/agi-bin/asteriskvk.php

Лезем в диалплан и на входящем маршруте адаптируем простенькую конструкцию:

exten => _.,n,AGI(asteriskvk.php)

Звоним и проверяем:

Интеграция Asterisk и VK через API
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
21 ноября
20:00
Бесплатный вебинар
Введение в Docker