Задать вопрос
@parserya

Как получить длительность Originate-вызова в Asterisk?

Здравствуйте.
Реализовал на сайте исходящий вызов с помощью phpagi через метод Originate:
$actionID = md5($input_phone.$manager_phone.time()); // Уникальный ID
if ($asm->connect()) {
	$call = $asm->send_request('Originate',
        array(
			  'Channel'=>"Local/".$manager_phone."@from-internal",
        'Context'=>'from-internal',
			  'Exten'=>$input_phone,
        'Priority'=>'1',
        'Callerid'=>"%ID оператора%",
	      'Async' => "yes",
			  'ActionID' =>  $actionID
			  ));
	$asm->disconnect();
}

Все работает - звонки идут. Возникла необходимость получать длительность этих звонков. И вот тут началось непонятное. В документации нашел метод CoreShowChannels, которому передаешь ActionID и он якобы возвращает длительность вызова. Когда вызываю этот метод, подключаясь через telnet, результаты показывает:
Response: Success
ActionID: c78d1d8c43e9b14a
EventList: start
Message: Channels will follow

Event: CoreShowChannel
Duration: 00:16:57
...


Однако, когда я тот же самый запрос делаю через PHP, в ответ получаю только верхнюю часть Array ( [Response] => Success [ActionID] => c78d1d8c43e9b14a [EventList] => start [Message] => Channels will follow )

Может быть после вызова send_request CoreShowChannels нужно делать какую-то дополнительный возов для получения результатов Event'ов? Кто-нибудь может меня хотя бы направить в нужную сторону?
Заранее спасибо!
  • Вопрос задан
  • 1125 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ловите Event: OriginateResponse
Action: login
Username: test
Secret: test
Events: on

Action: Originate
Channel: SIP/331
Application: Hangup
ActionID: adaff
Async: yes

Event: OriginateResponse
Privilege: call,all
ActionID: adaff
Response: Success
Channel: SIP/331-000003e0
Context: 
Exten: 
Reason: 4
Uniqueid: 1441039425.992
CallerIDNum: <unknown>
CallerIDName: <unknown>

Он отправляется в момент ответа канала, указанного в Channel

Разница во времени между отправкой Originate и получением OriginateResponse примерно равно времени дозвона.
Но самое главное вы получаете Uniqueid, по которому можно дальше связать с последующими Event-ами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы