Быстрый заказ без регистрации по телефону
+7(495)669 3308

Техническая поддержка доб - 4505

Пн.-Пт. 10:00-17:00

Skype Me™!

e-mail: info@sipring.ru


Список всех товаров
Показать корзину
Ваша корзина пуста.



Тест производительности VOIP.

concurrent calls

>>>
>>
30
10
5
3
1

 

введите код

 


Подробнее >>>>

Поделись ссылкой с другом

Интеграция Asterisk и HelpDesk (OTRS) Печать
Индекс материала
Интеграция Asterisk и HelpDesk (OTRS)
otrs + asterisk
Asterisk OTRS
Все страницы

OTRS ( Open-source Ticket Request System) — открытая система обработки заявок. OTRS позволяет организациям, занимающимся технической поддержкой каких-либо проектов, совместно работать над решением проблем пользователей. Программа написана на языке Perl, поддерживает множество СУБД (MySQL, PostgreSQL и т. д.), может интегрироваться с LDAP каталогом, распространяется по лицензии — AGPL версии 3. Программный продукт протестирован на таких системах как: Linux, Solaris, AIX, FreeBSD, OpenBSD, Mac OS X и Windows.

Системы обработки заявок, такие как OTRS, обрабатывают заявки как обыкновенные почтовые сообщения (email). Когда клиент посылает по почте запрос, система создает новую заявку. Клиентам  так-же доступен веб-интерфейс для создания новых заявок, проверки состояния существующих, написания ответов на старые заявки а также поиска их собственных заявок. Для интеграции собственных дополнений и приложений существует - OTRS API. Воспользуемся предоставленными возможностями для формирования заявки по телефону.

Задача: При входящем соединении на номер HelpDesk, происходит формирование заявки ( на основании определившегося номера) и вызов передается оператору. При ответе оператор открывая интерфейс работы с заявками уже имеет новую сформированную заявку и ему только необходимо ввести содержание.

Реализация: На стороне OTRS.

Для формирования заявки будем использовать протокол SOAP.  SOAP ( Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC. SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP. SOAP является одним из стандартов, на которых базируются технологии веб-служб.

Для использования данной возможности, необходимо задать имя пользователя и пароль. Следуем Администрирование -> Конфигурация системы. Выбираем модуль Core::SOAP и подтверждаем введенные данные.

 

 

Дальнейшие наши действия будут проходить на стороне Asterisk. Предположим номер на который приходит входящий вызов HelpDesk - 4509, а номер оператора - 4507. Отредактируем файл конфигурации vim /etc/asterisk/extensions_custom.conf следующим образом.

[otrs]

  • exten => 4509,1,Answer
  • exten => 4509,n,AGI(zayav.agi)
  • exten => 4509,n,Dial(SIP/4507,300,tr)
Файл - zayav.agi, обычный скрипт AGI, с двумя добавленными последними строками, которыми мы получаем и передаем номер позвонившего абонента в скрипт формирования заявки (my $cid = $AGI{'callerid'};system( "/opt/otrs/scripts/rpc_ast.pl $cid");) .
#!/usr/bin/perl
use strict;

$|=1;

# Setup some variables
my %AGI; my $tests = 0; my $fail = 0; my $pass = 0;

while() {
        chomp;
        last unless length($_);
        if (/^agi_(\w+)\:\s+(.*)$/) {
                $AGI{$1} = $2;
        }
}

sub checkresult {
        my ($res) = @_;
        my $retval;
        $tests++;
        chomp $res;
        if ($res =~ /^200/) {
                $res =~ /result=(-?\d+)/;
                if (!length($1)) {
                        print STDERR "FAIL ($res)\n";
                        $fail++;
                } else {
                        print STDERR "PASS ($1)\n";
                        $pass++;
                }
        } else {
                print STDERR "FAIL (unexpected result '$res')\n";
                $fail++;
        }
}


my $result = ;
&checkresult($result);
my $cid = $AGI{'callerid'};

system( "/opt/otrs/scripts/rpc_ast.pl $cid");

exit 0;