Сергей Маликов
15.06.2020
2040

Создание конференций из Telegram

Создавать конференции можно различными способами. Для создания конференций можно также использовать функционал телеграм – с помощью телеграм бота. Для создания бота необходимо инициировать диалог с ботом @botfather. После отослать ему команду /newbot. Бот запросит сначала имя (имя может быть неуникальным), и, далее – username (должно быть уникальным). Username должен заканчиваться на “bot” После создания бота […]

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

Для создания бота необходимо инициировать диалог с ботом @botfather. После отослать ему команду /newbot. Бот запросит сначала имя (имя может быть неуникальным), и, далее – username (должно быть уникальным). Username должен заканчиваться на “bot”

Создание бота

После создания бота botfather пришлет token для доступа к HTTP API

Полученный токен

На сервере с Asterisk создадим пользователя bot_ami установим минимально необходимые права доступа. Добавляем в general необходимые директивы.

nano /etc/asterisk/manager_custom.conf
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
webenabled = yes
httptimeout = 60

[bot_ami]
secret = asd097264684sdf
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
read = cdr,reporting,originate
write = reporting,originate
Создание ami пользователя

Для применения необходимо выполнить manager reload

asterisk -rv
asterisk>manager reload

Для проверки авторизации с данными созданной учетной записи на сервере необходимо выполнить

telnet 127.0.0.1 5038

После нажать два раза Enter и ввести

Action: login
Username: bot_ami
Secret: asd097264684sdf

При успешной авторизации должно появиться

Response: Success
Message: Authentication accepted
Проверка авторизации

На сервере в директории /var/www/html создадим скрипт

<?php
ini_set('log_errors', 'On');
ini_set('error_log', 'php_errors.log');

$TOKEN = '111100000:AAFPVUd11111000000_1111111000000000';
$BOT_USERNAME = 'asterisk_test_2020_bot';
$webhook = 'https://server_ip/tg_bot.php';
$url = 'https://api.telegram.org/bot' . $TOKEN . '/';
// Настройки прокси
$proxy='23.23.179.254:3128';
//$auth='login:password'; //пароль, если прокси – с паролем, в формате 'login:password'

echo get($url.'setWebhook?url='.$webhook, $proxy);


if (($json = valid()) == false) { echo "Hi,  =)"; exit(); }

	$uid = $json['message']['from']['id'];        
	$first_name = $json['message']['from']['first_name'];
	$ANSWER = "Салют, ".$first_name;
	$text = $json['message']['text'];
  
  switch($text){
      
    case '/сonf':
      $ANSWER = "Создание конференции";
	  
	  confcall();
    break; 
    case '/help':
      $ANSWER = "Для создания конференции введите /conf номер";
    break;      
      
case '/start':
$ANSWER = "Выберите команду.
Список комманд для бота:
/start
/conf
/help
";
break;      
  }

  
sendMessage($uid,$ANSWER);
  



function valid() {
  $request_from_telegram = false;
  if(isset($_POST)) {

    $data = file_get_contents("php://input");
      if (json_decode($data) != null)
        $request_from_telegram = json_decode($data,1);
  }
  return $request_from_telegram;
} 

function sendMessage($chat_id,$text,$markup=null, $proxy, $auth=NULL) 
{ 

  return get($GLOBALS['url'].'sendMessage?chat_id='.$chat_id.'&text='.urlencode($text).'&reply_markup='.$markup.'&parse_mode=Markdown', $proxy); 

} 

function get($url, $proxy, $auth=NULL) 
{ 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

curl_setopt($ch, CURLOPT_PROXY, $proxy);
//если proxy с авторизацией
if($auth){
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth);
}
$data = curl_exec($ch); 
curl_close($ch); 
return $data; 
} 


function confcall ($group, $num_conf) {
	$host = "192.168.32.1";
$port = "5038";
$timeout = "10";

$user = "bot_ami";
$pass = "1234";



$sconn = fsockopen ($host, $port, $errno, $errstr, $timeout) or die ("Connection to $host:$port failed!");


                                        //подключение
                                        fputs ($sconn, "Action: Login\r\n");
                                        fputs ($sconn, "Username: $user\r\n");
                                        fputs ($sconn, "Secret: $pass\r\n\r\n");

                                        //вызов и присоединение к конференции
										fputs ($sconn,"Action: Originate\r\n");
										fputs ($sconn,"Channel: Local/$number@from-internal\r\n");
										fputs ($sconn,"Timeout: 15000\r\n");
										fputs ($sconn,"Callerid: $invite <$num_conf>\r\n");
										fputs ($sconn,"Application: ConfBridge\r\n");
										fputs ($sconn,"Data: $num_conf\r\n");
										fputs ($sconn,"Async: true\r\n\r\n");

                                        fputs($sconn, "Action: Logoff\r\n\r\n");
		sleep(2);
		fclose ($sconn);
}
?>

Также про Telegram бота см. статью «Telegram Callback»

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

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

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

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

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