Получаем 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