Алина Леонова
31.05.2020
6918

Отправка уведомлений из Asterisk в ВКонтакте с помощью сервиса RED SMS

Уведомления, которые приходят из Asterisk – достаточно полезный функционал, которым многие компании пользуются. С помощью уведомлений можно отследить пропущенные вызовы на разных этапах прохождения вызовов (будь то, например, голосовое меню, очередь или ещё что-то), узнать, что вызов сейчас поступит, или же настроить уведомления, которые позволят производить мониторинг сервера. Чаще всего уведомления приходят на почту или […]

Уведомления из Asterisk в ВКонтакте RED SMS

Уведомления, которые приходят из Asterisk – достаточно полезный функционал, которым многие компании пользуются. С помощью уведомлений можно отследить пропущенные вызовы на разных этапах прохождения вызовов (будь то, например, голосовое меню, очередь или ещё что-то), узнать, что вызов сейчас поступит, или же настроить уведомления, которые позволят производить мониторинг сервера. Чаще всего уведомления приходят на почту или в SMS. Однако этим всё не ограничивается.

В данной статье рассмотрим возможность отправки уведомлений из Asterisk в социальную сеть ВКонтакте. Делать это будем с помощью сервиса RED SMS.

С помощью сервиса RED SMS можно протестировать некоторый предоставляемый ими функционал. Однако для рассылки сообщений в ВКонтакте должен быть заключён договор с RED SMS.

Подготовка на стороне ВК

Для того чтобы реализовать данный функционал, необходимо сообщество в ВКонтакте. Точнее – нам нужен ключ доступа с правами доступа к сообщениям.

Для создания ключа:

  1. В сообществе переходим на вкладку Работа с API (Управление -> Работа с API);
  2. Создаём новый ключ доступа;
  3. Разрешаем доступ к сообщениям.
Ключи в сообществе

Подробнее о работе с ключами в ВКонтакте можно прочитать в документации по API для сообщений сообществ

Важно обратить внимание на то, что для получения пользователем писем от сообщества в ВКонтакте необходимо разрешение. Разрешение можно получить, если пользователь, например, напишет письмо сообществу.

Подготовка на стороне RED SMS

Для начала понадобится создать имя отправителя. Делается это в личном кабинете сервиса рассылки.

  1. Переходим в Имена отправителей (Настройки -> Имена отправителей);
  2. Из списка выбираем ВКонтакте;
  3. Вводим ключ доступа, имя отправителя.
Обязательный пункт для создания имени отправителя для ВКонтакте – заполнение гарантийного письма в mail.ru. Шаблон можно скачать на третьем шаге создания имени отправителя.
Имя отправителя

Отправлять сообщения можно будет после того, как имя будет одобрено.

Подготовка на стороне сервера телефонии

Данный функционал актуален для php 5.6. Для других версий могут потребоваться доработки.

На этом этапе напишем скрипт 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 и другим важным значениям.

На этом данная статья завершена.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.