Установка переменной Freeswitch с использованием Perl

Существует диалплан, который перенаправляет входящий вызов трем пользователям в циклическом режиме.

Он делает запрос веб-сервиса с помощью curl следующим образом:

<action application="curl" data ="http://10.0.0.90:3081/routecall?number='${caller_id_number}' " inline="true" />

Служба curl добавляет номер вызывающего абонента в качестве параметра получения и возвращает следующие параметры, разделенные специальным символом «-»:

Например: Тонни_Старк-1002-1003-1005

  • Отображаемое имя звонящего (Tonny_Stark)
  • Первый клиент для соединения (1002)
  • Второй клиент для подключения (1003)
  • Третий клиент для соединения (1005)

Я должен разобрать этот ответ на разные переменные и передать его действию моста. Я написал Perl-скрипт для синтаксического анализа следующим образом:

#!/usr/bin/perl5.8.8

$curl_response= $ARGV[0]; // The response from webservice.
$param_name = $ARGV[1] ;  // The parameter that is needed.

@params = split(/-/, $curl_response);


print  getParamValue();



sub getParamValue(){

if($param_name eq  "display_name")
{

  return $params[0];
}
elsif($param_name eq "first_cce")
{

  return $params[1];
}
elsif($param_name eq "second_cce")
{

  return $params[2];
}


}

Вызов этого perl-скрипта осуществляется следующим образом:

  <action application ="perl" data= "firstcce.pl '${curl_response_data}' 'first_cce'}" />

Нужен ответ от perl-скрипта на действие моста:

<action application="bridge" data="{sip_contact_user ='${display_name_from_perl}'} [myid=bridge1]user/${first_cce_from_perl} | [myid=bridge2]user/${second_cce_from_perl}"/>

** Но я не знаю, как Perl-скрипт будет возвращать значения и назначать их переменным, которые можно использовать в действии моста. **


person Parth mehta    schedule 11.04.2014    source источник
comment
Пожалуйста, укажите причину для отрицательного голоса   -  person Parth mehta    schedule 11.04.2014
comment
За тебя проголосовали, потому что неясно, чего ты хочешь. Вы даете Perl, но я не вижу никакого Perl. Вы не объясняете, из какой строки берутся данные, как выглядят данные или что делает ваш Perl-скрипт.   -  person David W.    schedule 11.04.2014
comment
Ответ от веб-сервиса вместе с тем, какой параметр необходим, передается Perl-скрипту в качестве дополнительных аргументов. Скрипт разбивает приведенный выше ответ в массив. Не знаю, как он вернет значение и присвоит его переменной в FreeSwitch.   -  person Parth mehta    schedule 12.04.2014
comment
Добавил необходимую информацию. Пожалуйста, предложите путь вперед.   -  person Parth mehta    schedule 14.04.2014


Ответы (1)


Понятно. Отвечая на мой собственный вопрос.

Объявите переменную в диалплане.

<variable name="var_name" value =""/>

Доступ к нему из Perl-скрипта:

 $session->setVariable("var_name",  $value);

Изменил Perl-скрипт следующим образом:

#!/usr/bin/perl5.8.8

$curl_response= $ARGV[0];

@params = split(/-/, $curl_response);

getParamValue();


sub getParamValue(){

 $session->setVariable("display_name",  $params[0]);

 $session->setVariable("first_cce", $params[1]);

 $session->setVariable("second_cce",$params[2]);

 $session->setVariable("third_cce" , $params[3]);   


}
1;

Спасибо.

person Parth mehta    schedule 14.04.2014