SIP: fsockopen не отвечает правильно / работает пользователь - PullRequest
0 голосов
/ 05 октября 2018

Я много раз пробовал с несколькими серверами с правильным логином и паролем, но я не получаю ответа.

$ports = array('5060','5061');
foreach($ports as $port){
$socket = fsockopen("71.170.105.118", $port, $errno, $errstr, 30);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: XXX\r\n");
fputs($socket, "Secret: XXX\r\n\r\n");
fputs($socket, "Action: Command\r\n");
fputs($socket, "Command: sip show peers\r\n\r\n");

$wrets=fgets($socket,128);

echo $wrets."¦".$errno."¦".$errstr."\n";

}

Я получаю этот ответ:

¦0¦
¦0¦

Iищу, чтобы убедиться, что учетные данные верны или нет, чтобы выполнить мои следующие команды.

Спасибо

1 Ответ

0 голосов
/ 05 октября 2018

Вы пытаетесь подключиться к Asterisk AMI (Asterisk Manager Interface), но он работает с другим портом, вы можете найти правильный порт в файле manager.conf в общем разделе, мой содержит это:

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects=no ;only effects 1.6+

Итак, как видите, порт 5038 вместо 5060 и 5061, но когда я пытался соединиться с вашим кодом, он возвращает только строку Asterisk Call Manager/2.10.4 ¦0¦, поэтому я переписал ее немного:

$socket = fsockopen("XXX.XXX.XXX.XXX", '5038', $errno, $errstr, 30);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: admin\r\n");
fputs($socket, "Secret: XXXXXXX\r\n\r\n");
fputs($socket, "Action: Command\r\n");
fputs($socket, "Command: sip show peers\r\n\r\n");
fputs($socket, "Action: Logoff\r\n");

while ($wrets=fgets($socket)) {
    var_dump($wrets);
}

Итак, теперь все отлично работает

...