Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

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

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Голосовой набор в Asterisk.

База знаний Настройка Asterisk

Думаю каждому помнится удобный функционал мобильных телефонов Nokia, когда можно было позвонить абоненту, лишь произнеся его имя. В данной статье мы рассмотрим прекрасную разработку Дмитриева Сергея, которая написана на NodeJS и позволяет реализовать функционал быстрого голосового набора в Asterisk.

Все описанные действия в статье на сервере телефонии необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 6.9 + Asterisk 11.23.1 + FreePBX 13.

Инструкция:

Голосовой набор реализован на базе мини AGI сервера и имеет возможность работы с такими распространёнными сервисами распознавания голоса как Yandex SpeechKit Cloud, Google Speech(и данные сервисы ранее рассматривались у нас на сайте (Синтез речи средствами yandex speech / Автоответчик с распознаванием речи или принятие заявок в автоматическом режиме). Но в данной статье мы рассмотрим новый для нас сервис распознавания голоса Wit.AI с которым мини AGI сервер так же способен работать.

1.                  Получим API ключ от сервиса Wit.AI, для этого нам необходимо пройти регистрацию на странице https://wit.ai/ . Регистрация на сервисе возможна с помощью учетной записи GitHub или Facebook. В нашем случае будет рассмотрена регистрация с использованием учетной записи GitHub, нажмём на кнопку “Log in with GitHub”:

Регистрация в сервисе Wit.AI

Обязательное условие, Вы должны быть авторизованы в том сервисе, который используете для регистрации.

 

2.                  Подтвердим процедуру авторизации нажатием кнопки “Authorize wit-ai”:

 Регистрация в сервисе Wit.AI

3.                   Введем свой email адрес и информацию о том для каких целей будете использовать сервис Wit.AI:

 Регистрация в сервисе Wit.AI

4.                  После завершения процедуры регистрации можем приступить к получению API ключа для использования сервиса. Перейдём в “Settings” и заполним пункты в соответствии с планируемым региональным использованием приложения распознавания голоса, а так же скопируем “Server Access Token”, который потребуется в дальнейшей настройке.

 Получение API ключа.

5.                  Для начала нам необходимо произвести установку NodeJS, выполним подключение по SSH к серверу телефонии, в зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала. И выполним ряд команд вида:

# yum -y groupinstall 'Development Tools'
# curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
# yum -y install nodejs

Установка 'Development Tools'

 Установка NodeJS

6.                  Приступим к установке и настройке AGI сервера, выполним ряд команд вида:

# npm install voicer -g
# npm install pm2 -g

Установка приложения Voicer

Установка приложения PM2

 

7.                  Выполним настройку установленного AGI сервера:

# mkdir /etc/voicer
# mkdir /etc/voicer/data
# nano /etc/voicer/config.js

Приведем файл к виду:

module.exports = {
    agi: {
        port: 3000
    },
    web: {
        port: 3100,
        auth: true,
        username: 'admin',
        password: 'admin',
        realm: 'My company'
    },
    processing: {
        totalAttempts: 2,
        playGreeting: true,
        playBeepBeforeRecording: false   //use system beep
    },
    asterisk: {
        sounds: {
            onErrorBeforeFinish: 'invalid',
            onErrorBeforeRepeat: 'invalid',
            greeting: 'beep'
        },
        recognitionDialplanVars: {
            status: 'RECOGNITION_RESULT',
            target: 'RECOGNITION_TARGET'
        }
    },
    record: {
            directory: '/tmp',
            type: 'wav',
            duration: 2,
    },
    recognize: {
            directory: '/tmp',
        type: 'witai',    // ['yandex', 'google', 'witai']
        options: {
            developer_key: 'API_ключ'
        }
    },
    lookup: {
        type: 'file',
        options: {
            dataFile: '/etc/voicer/data/peernames.json'
        }
    },
    logger: {
        console: {
            colorize: true
        },
        file: {
            filename: '/var/log/voicer.log',
            json: false
        }
    }
};

 

Где основными элементами требующими настройки является:

username, password – логин и пароль для доступа к WEB панели управления AGI сервером

type: 'witai' – имя используемого сервиса распознавания голоса

developer_key – API ключ сервиса распознавания голоса

Создание директорий.

Редактирование конфигурационного файла.

 

8.                  Для того чтобы AGI сервер обращался корректно к созданному конфигурационному файлу, закрепим системную переменную:

# export VOICER_CONFIGFILE=/etc/voicer/config.js

Внесение расположения конфигурационного файла в системные переменные.

  

9.                  AGI сервер перенаправляет звонок на соответствующий номер внесенный в конфигурационный файл. Для удобства занесения соответствия имени сотрудника и внутреннего номера, был написан BASH скрипт, который парсит занесенный внутренние номера и присвоенные им имена.

# nano /usr/src/parser.sh

Приведём данный файл к виду:

#!/bin/bash
 
r="\033[0;31m"
g="\033[0;32m"
y="\033[0;33m"
n="\033[0m"
FILE=/etc/voicer/data/peernames.json
 
clear
echo -e "${y}Привет! Я скрипт выгрузки информации по внутренним номерам  ${n}"
 
rm -f $FILE && echo -e "${y}Я уже удалил предыдущий файлик и приступил к заполнению нового ${n}"
 
 for i in $(asterisk -rx 'sip show peers' | grep -P 'OK|UNKNOWN' | sed 's/\// /g' | awk '{print $1}'); do
 
        if [[ "${#i}" < 6 && -z "${i//[0-9]/}" ]];then
                #echo ${i}
 
                str=$( asterisk -rx "sip show peer $i" | grep "Reg. Contact : sip"; )
                #echo $str
 
                name=$( asterisk -rx "sip show peer $i" | grep "Callerid"; )
                #echo $name
 
                ext=${str##*'sip:'}
                ext=${ext%%'@'*}
 
                name=${name##*': "'}
                name=${name%%'" <'*}
                name=${name%%' '*}
 
                echo -e "\n  {\n    \"name\": \"$ext\",\n    \"target\": \"SIP/$ext\",\n    \"variants\": [\n      \"${name}\"\n    ]\n  }," >> $FILE
                echo -e "${g}Номерок $ext уже обработан и добавлен в список. Следующий...${n}"
        fi
 
done
 
sed -i -e '1 s/^/[/;' $FILE
echo ']' >> $FILE
echo -e "${y}Я закончил! До свидания! =^_^=${n}"
 
# chmod 777 /usr/src/parser.sh
# cd /usr/src/
# ./parser.sh

Создание скрипта парсера.

Назначение прав скрипту на выполнение.

Запуск скрипта и информирование о успешном завершении импорта данных.

 

10.              Отредактируем исполнительный файл приложения:

# nano /usr/bin/voicer

Приведем данный файл к виду:

#!/usr/bin/node
 
var configfile = '/etc/voicer/config.js';
var fileExists = require('file-exists');
var conf = configfile;
 
if (fileExists(conf)) {
  var config = require(configfile);
  var Voicer = require('./index');
 
  var voicer = new Voicer(config);
  voicer.start();
} else {
  console.log('no configfile:', conf);
}

Редактирование исполняемого файла приложения Voicer.

11.              Для возможности автозапуска и управлением AGI сервером как сложбой, создадим сервис:

# nano /etc/init.d/voicer

Приведём данный файл к виду:

#!/bin/sh
 
### BEGIN INIT INFO
# Provides:          voicer
# Required-Start:    $network $syslog $named
# Required-Stop:     $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop voicer
### END INIT INFO
 
set -e
 
if [ -z "$1" ] ; then
    echo "Usage: $0 [start|stop|restart]"
    exit 0
fi
 
if [ "$1" = "start" ] ; then
    pm2 start voicer
elif [ "$1" = "stop" ] ; then
    pm2 stop voicer
elif [ "$1" = "restart" ] ; then
    $0 stop
    sleep 5
    $0 start
fi
# chmod 777 /etc/init.d/voicer
# chkconfig voicer on
# service voicer start

Создание службы.

 Назначение прав на выполнение и запуск приложения.

12.              Добавим в диалплан Asterisk возможность обращения к AGI серверу:

# nano /etc/asterisk/extensions_custom.conf

И добавим строки вида:

exten=777,1,AGI(agi://localhost:3000)
exten=777,n,GotoIf($[${RECOGNITION_RESULT}=SUCCESS]?:default,777,4)
exten=777,n,Dial(${RECOGNITION_TARGET})

Редактирование диалплана Asterisk.

 

13.              Теперь при звонке по короткому номеру 777, после звукового сигнала произнесем имя сотрудника и система автоматически соединит с указанным в конфигурационном файле внутренним номером.

Прохождение звонка на короткий номер 777.

14.              Редактирование соответствия имени сотрудника с внутренним номером, добавление вариантов имени, можно производить в WEB интерфейсе, доступному по адресу http://IP_адрес_АТС:3001

WEB интерфейс приложения Voicer.

asterisk, sip, установка, настройка, инструкция, Подключение, FreePBX, for, внутренние номера, callerid, centOS, GitHub