Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!
2000 ₽

Модуль SIP на PHP

закрыт без выполнения
PHP


Сип аккаунт на мегафоновском мультифоне дам для тестов.

Необходимо сделать модуль на PHP (возможны варианты)
который будет делать следующие вещи:
1.Соединяться как SIP клиент с мегафоновским мультифоном http://multifon.ru/help/
2.Проходить авторизацию
3. вызывать абонента по номеру, который модуль получает извне (от меня). ГОЛОСОВОЙ ПОТОК ПОЛУЧАТЬ/ОТПРАВЛЬЯТЬ не надо. Только сигнализацию!
4. слушать предответное состояние, когда приходит сигнализация
(SIP/2.0 180 Ringing — Местоположение вызываемого пользователя определено. Ему дается сигнал о входящем вызове.)
5. при получении этого сигнала СРАЗУ отправлять отмену вызова (Request Cancel)
оплата только после тестового звонка и сброса.
пример sip сигнализации тут
https://code.google.com/p/php-sip/source/browse/trunk/?r=28
и обсуждается активно здесь
http://level7systems.co.uk/en/click_to_call_with_php_sip/
еще раз: мне надо инициировать звонок, получить информацию что на том конце его могут принять (гудки пошли) или нет и сразу сбросить чтоб не платить за
звонок деньги. и передать мне эту информацию.
пример у меня нормально не отработал - он сыпется на 403 ошибке - проблемы с авторизацией (wiresnarkom отснифил)
вот мной модернизированный скрипт,
тут используется логин и пароль для моего действующего аккаунта на мегафоновском мультифоне.




<head><title>PHP-SIP Click to Call</title></head>

<body>

<?php if (isset($_POST['from']) && isset($_POST['to'])) : ?>

<?php require_once('PhpSIP.class.php') ?>

<?php $from = $_POST['from']; $to = $_POST['to'] ?>

Trying call from <?php echo $from ?> to <?php echo $to ?> ...<br />

<?php flush() ?>

<pre>
<?php

try{

$api = new PhpSIP('172.xxx.xxx.xxx');
//$api = new PhpSIP();

$api->setDebug(true);





$api->setUsername('7932==========');
$api->setPassword('*************');


$api->setMethod('INVITE');



$api->setFrom('sip:[email protected]');
$api->setUri('sip:[email protected]');

$res = $api->send();


echo "res: $resn";







if ($res == 200) {
usleep(500000);
$api->setMethod('REFER');
$api->addHeader('Refer-to: sip:[email protected]');
$api->addHeader('Referred-By: sip:[email protected]');
$api->send();

$api->setMethod('BYE');
$api->send();

$api->listen('NOTIFY');
$api->reply(481,'Call Leg/Transaction Does Not Exist');
}

if ($res == 'No final response in 5 seconds.') {
$api->setMethod('CANCEL');
$res = $api->send();
}





echo $res;

} catch (Exception $e) {

echo "Opps... Caught exception:";
echo $e;
}

?>
</pre>
<hr />

<a href="<?php echo $_SERVER['PHP_SELF']; ?>">Back</a>

<?php else : ?>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<fieldset>
From: <input type="text" name="from" size="25" value="" />
To: <input type="text" name="to" size="25" value="sip:[email protected]" />
<input type="submit" value="Call" />
</fieldset>
</form>

<?php endif ?>

</body>
</html>


Сделать ставку!

Заказчик не желает делать предоплату? Предложите оплату через Сейф, чтобы избежать возможного мошенничества.

Заказчик
Яша Яша
Россия Россия  4   0
Проект опубликован
9 октября 2015
219 просмотров
Способы оплаты
Поделиться