Я хочу интегрировать PAMI с моим веб-приложением, которое должно открывать определенный URL, который является не чем иным, как веб-страницей в нашем приложении (сведения о вызывающем абоненте) входящего вызывающего абонента.У меня есть данные API PAMI, например, имя хоста, имя пользователя, пароль, номер порта.
Мой вопрос: как мне выполнить каждое условие, чтобы оно выполнялось только один раз, когда в вызове происходит другое событиекак Звонок, Не отвечает, Отклонено получателем, Ответ получателем, Вызов завершен.(Ниже код для описания).
Я использовал пример кода из (http://marcelog.github.io/PAMI), чтобы достичь того, чего хотел, но я застрял в точке.
Ниже приведен код, который я реализовал до сих пор
<?php
// declare(ticks=1);
require 'vendor/autoload.php';
$options = array(
'host' => 'sip3.intupbx.wave-tell.com',
'scheme' => 'tcp://',
'port' => 5039,
'username' => 'someusername',
'secret' => '******',
'connect_timeout' => 1000,
'read_timeout' => 1000
);
$client = new \PAMI\Client\Impl\ClientImpl($options);
// Open the connection
$client->open();
use PAMI\Message\Event\EventMessage;
use PAMI\Listener\IEventListener;
use PAMI\Message\Event\HangupEvent;
// use PAMI\Listener\IEventListener;
$running = true;
while($running) {
$client->registerEventListener(function ( $event) {
$eventType = $event->getKeys()['event'];
$stateType = $event->getKeys()['channelstatedesc'];
if($eventType=='Newstate' && $stateType=='Ring'){
echo('Ringing..');
// Perform some Database Query and custom event perform by web app.
// Show StateType on Popup Screen in web app.
}
else if($eventType=='HangupRequest' && $stateType=='Ringing'){
echo('Not Responding..');
// Show StateType on Popup Screen in web app.
}
else if($eventType=='Hangup' && $stateType=='Ringing'){
echo('Rejected by receiver..');
// Show StateType on Popup Screen in web app.
}
else if($eventType=='Newstate' && $stateType=='Up'){
echo('Answered by receiver..');
// Show StateType on Popup Screen in web app.
}
else if($eventType=='HangupRequest' && $stateType=='Up'){
echo('Call Ended..');
// Show StateType on Popup Screen in web app.
}
echo '<pre>';print_r($event);
die;
});
$client->process();
usleep(1000);
}
// Close the connection
$client->close();
?>
Ответ от сервера звездочки выглядит следующим образом:
Ringing..
PAMI\Message\Event\NewstateEvent Object
(
[rawContent:protected] => Event: Newstate
Privilege: call,all
SystemName: pbx03
Channel: SIP/200-WTC-000b5da0
ChannelState: 4
ChannelStateDesc: Ring
CallerIDNum: 200
CallerIDName: 200-WTC
ConnectedLineNum:
ConnectedLineName:
Language: en
AccountCode: WTC
Context: authenticated
Exten: 201
Priority: 1
Uniqueid: pbx03-1556624215.8440298
Linkedid: pbx03-1556624215.8440298
[channelVariables:protected] => Array
(
[sip/200-wtc-000b5da0] => Array
(
)
)
[lines:protected] => Array
(
)
[variables:protected] => Array
(
)
[keys:protected] => Array
(
[event] => Newstate
[privilege] => call,all
[systemname] => pbx03
[channel] => SIP/200-WTC-000b5da0
[channelstate] => 4
[channelstatedesc] => Ring
[calleridnum] => 200
[calleridname] => 200-WTC
[connectedlinenum] =>
[connectedlinename] =>
[language] => en
[accountcode] => WTC
[context] => authenticated
[exten] => 201
[priority] => 1
[uniqueid] => pbx03-1556624215.8440298
[linkedid] => pbx03-1556624215.8440298
)
[createdDate:protected] => 1556624215
)