Цель: использовать сервер LAMP для регистрации в качестве конечной точки и сервера SIP.
Зачем: Для перехвата телефонных звонков на определенный добавочный номер, когда они взаимодействуют с PHP CRM.
SIP-сервер не использует Asterisk, так как должен быть достаточно универсальным, чтобы обслуживать любой SIP-сервис.
Я использую удобный PHP SIP Library, написанная Level7Systems — Хотя на этом конкретном пакете не так много примеров или поддержки.
Мой код:
$api1 = new PhpSIP('x.x.x.x'); //My Servers public IP
$api1->setMethod('REGISTER');
$api1->setFrom('sip:[email protected]');
$api1->setUri('sip:[email protected]');
$api1->setUsername('12345');
$api1->setPassword('abc123');
$res = $api1->send();
Код выполняется успешно, создает сокет (и файл блокировки), привязывается к порту и, предположительно, отправляет пакет UDP на SIP-сервер … Хотя, когда я запускаю tcpdump
Я не вижу пакетов UDP, попадающих на порт 5060 или 5061 для сервера назначения.
Код будет работать в течение 10 секунд, пока он ожидает ответа от сервера SIP, поскольку он должен вернуться с ответом 404. Но это никогда не происходит.
Конечно, я также отключил свой брандмауэр.
У кого-нибудь был опыт регистрации конечной точки SIP с использованием PHP?
Есть ли лучший способ сделать это?
Я предлагаю добавить попытку … поймать, чтобы увидеть, что происходит в вашей рутине.
try {
$api1 = new PhpSIP('x.x.x.x'); //My Servers public IP
$api1->setMethod('REGISTER');
$api1->setFrom('sip:[email protected]');
$api1->setUri('sip:[email protected]');
$api1->setUsername('12345');
$api1->setPassword('abc123');
$res = $api1->send();
echo "res: $res\n";
} catch (Exception $e) {
echo $e->getMessage()."\n"; }
Но, если вы используете SIP-телефоны, другое решение состоит в том, чтобы попытаться использовать действие URL / активный URI. Здесь хороший руководство чтобы понять, как их использовать.
Так и оказалось, что @sip-server.com
на самом деле не был активным SIP-сервером.
Это было больше похоже @sip.sip-server.com
это нужно было пинговать, и как только это изменение произошло, все заработало, как и ожидалось.
Благодарю.