Я много раз пробовал с несколькими серверами с правильным логином & пароль, но я не получаю ответа.
$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¦
Я ищу, чтобы убедиться, что учетные данные верны или нет для выполнения моих следующих команд.
Спасибо
Вы пытаетесь подключиться к 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);
}
Итак, теперь работает нормально
Других решений пока нет …