|
Страница 1 из 3 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;
|