Вы пытаетесь подключиться к 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);
}
Итак, теперь все отлично работает