Отправка уведомлений из Asterisk в ВКонтакте с помощью сервиса RED SMS
Уведомления, которые приходят из Asterisk – достаточно полезный функционал, которым многие компании пользуются. С помощью уведомлений можно отследить пропущенные вызовы на разных этапах прохождения вызовов (будь то, например, голосовое меню, очередь или ещё что-то), узнать, что вызов сейчас поступит, или же настроить уведомления, которые позволят производить мониторинг сервера. Чаще всего уведомления приходят на почту или […]
Уведомления, которые приходят из Asterisk – достаточно полезный функционал, которым многие компании пользуются. С помощью уведомлений можно отследить пропущенные вызовы на разных этапах прохождения вызовов (будь то, например, голосовое меню, очередь или ещё что-то), узнать, что вызов сейчас поступит, или же настроить уведомления, которые позволят производить мониторинг сервера. Чаще всего уведомления приходят на почту или в SMS. Однако этим всё не ограничивается.
В данной статье рассмотрим возможность отправки уведомлений из Asterisk в социальную сеть ВКонтакте. Делать это будем с помощью сервиса RED SMS.
Подготовка на стороне ВК
Для того чтобы реализовать данный функционал, необходимо сообщество в ВКонтакте. Точнее – нам нужен ключ доступа с правами доступа к сообщениям.
Для создания ключа:
- В сообществе переходим на вкладку Работа с API (Управление -> Работа с API);
- Создаём новый ключ доступа;
- Разрешаем доступ к сообщениям.
Подробнее о работе с ключами в ВКонтакте можно прочитать в документации по API для сообщений сообществ
Подготовка на стороне RED SMS
Для начала понадобится создать имя отправителя. Делается это в личном кабинете сервиса рассылки.
- Переходим в Имена отправителей (Настройки -> Имена отправителей);
- Из списка выбираем ВКонтакте;
- Вводим ключ доступа, имя отправителя.
Отправлять сообщения можно будет после того, как имя будет одобрено.
Подготовка на стороне сервера телефонии
На этом этапе напишем скрипт sendvk.php, с помощью которого будем подключаться к RED SMS и передавать им необходимые данные.
Для подключения к сервису потребуется API-ключ. Подробнее о том, как его создать, можно прочитать в статье «Отправка SMS-уведомлений с помощью сервиса RED SMS».
Подробнее об API сервиса можно прочитать в официальной документации.
Также нам потребуется RedsmsApiSimple.php – это исходный код класса для взаимодействия с сервисом. Его можно найти здесь.
В самое начало класса, где описаны константы, объявляем константу для VK:
const VK_TYPE = 'vk';
Далее объявим функцию SendVK (в примере функция объявлена там же, где находятся функции SendSMS и SendViber).
public function sendVK($to, $text, $from)
{
$methodUrl = 'message';
$to = is_array($to) ? $to : [$to];
$data = [
'to' => implode(',', $to),
'text' => $text,
'from' => $from,
'route' => RedsmsApiSimple::VK_TYPE,
];
return $this->sendPost($methodUrl, $data);
}
Данная функция – одна из основных составляющих взаимодействия RED SMS и ВКонтакте. В дальнейшем из скрипта sendvk.php в неё будут переданы имя отправителя, текст сообщения и адресат в ВКонтакте. Также отдельно передаём маршрут отправки.
Приступим к написанию скрипта sendvk.php.
<?php
require 'RedsmsApiSimple.php';
$login = 'Логин от личного кабинета RED SMS';
$api_key = 'Заранее созданный API-ключ';
$name = 'Имя отправителя';
$to = 'Адресат ВК';
$api = new \Redsms\RedsmsApiSimple($login, $api_key);
$uuid = '';
try{
echo "RED SMS. Отправка сообщения в ВКонтакте: \n";
$res = $api->SendVK($to, 'Test text', $name);
if (!empty($res['items'])) {
$mess = $res['items'];
foreach ($mess as $message) {
echo $message['to'] . "-" . $message['uuid'] . "-" . $message['status'] . "\n";
$uuid = $message['uuid'];
}
}
if ($uuid) {
echo "Статус: \n";
$info = json_encode($api->messageInfo($uuid));
echo "$info \n";
echo "Пожалуйста, подождите 10 секунд...";
sleep(10);
$info = json_encode($api->messageInfo($uuid));
echo "$info \n";
}
} catch (\Exception $e) {
echo "Ошибка " . $e->getCode() . ": " . $e->getMessage() . "\n";
}
echo "Успешно! \n";
?>
Рассмотрим, что делает скрипт. Подключаем файл с исходным кодом класса – RedApiSimple.php – всё взаимодействие между сервисом и ВКонтакте происходит с помощью этого класса. Далее передаём в него логин и API-ключ. Это необходимо для авторизации. Соответственно далее объявляем переменные $name и $to – имя отправителя и адресат.
Переменную $uuid оставляем пустой – с её помощью при отправке получим необходимую информацию о сообщении.
После этого отправляем сообщение с помощью переменной $res. В ней передаём в функцию SendVK необходимые для отправки данные.
В завершении выводим по uuid нужную нам информацию о сообщении. В примере это адресат, uuid и статус сообщения.
Пример работы
В качестве примера работы будем отсылать уведомление о том, что в голосовом меню пропущен вызов от номера N в время T.
Подробнее о реализации такого функционала с помощью диалплана можно прочитать в этой статье.
Введём в скрипт выше 2 переменные — $cid = $argv[1] – номер звонящего; и $dtime = $argv[2] – дата и время поступления вызова на АТС. Также изменим текст сообщения на нужный. В примере: “В голосовом меню пропущен был сброшен вызов. Номер: $cid. Время: $dtime”.
Далее перейдём в конфигурационный файл диалплана. Так как функционал рассматриваем на примере дистрибутива с FreePBX, нам понадобится файл extensions_override_freepbx.conf. Здесь в контексте необходимой IVR пропишем:
exten => h,1,NoOp(Отправка уведомления о пропущенном в ВКонтакте)
same => n,System(/usr/bin/php -f /var/www/html/redsms/sendvk.php ${CALLERID(num)} ${CDR(start)})
Не забываем применить изменения после сохранения.
Теперь проверим. Позвоним на номер, который ведёт в IVR, и, не дожидаясь перевода вызова далее, сбросим его. По Hangup, как видно из скриншота ниже, вызвался скрипт sendvk.php. Также в него были переданы следующие значения: номер звонящего, а также дата и время вызова.
Доступ к отправленным сообщениям есть в личном кабинете сервиса RED SMS в разделе Детализация (Отчёты -> Детализация). Здесь видим, что сообщение было успешно доставлено.
Также, если развернуть данное сообщение, можно увидеть подробную информацию о статусе, uuid и другим важным значениям.
На этом данная статья завершена.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.