img

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

Работаете с 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
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Еще по теме:
img
Мы создали калькулятор инсталляции IP - АТС Asterisk. При планировании сервера и необходимого оборудования заполните соответствующие поля для расчета производительности, шлюзов и плат
img
Скачать руководство администратора Cisco UCM/CME на русском языке
img
Скачать руководство администратора FreePBX на русском языке
img
Рассказываем как рассчитать пропускную способность для IP-вызовов Cisco
img
Рассказываем как настроить отправку СМС сообщений из контакт-центра Октелл через Ростелеком СМС Реклама