From 957d790ed3f61a545f98353ed1c6dc3270c82f24 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Thu, 18 Jun 2020 14:14:57 +0200 Subject: [PATCH] Update call docs --- docs/docs/CALLS.md | 39 +++++++++------------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/docs/docs/CALLS.md b/docs/docs/CALLS.md index 48b6de75..3e9d370d 100644 --- a/docs/docs/CALLS.md +++ b/docs/docs/CALLS.md @@ -7,19 +7,7 @@ image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png MadelineProto provides an easy wrapper to work with phone calls. - -```php -if (!file_exists('input.raw')) { - echo 'Downloading example song'.PHP_EOL; - copy('https://github.com/danog/MadelineProto/raw/master/input.raw', 'input.raw'); -} -$call = yield $MadelineProto->requestCall('@danogentili')->play('input.raw')->then('input.raw')->playOnHold(['input.raw'])->setOutputFile('output.raw'); - -// We need to receive updates in order to avoid closing the script before the call has ended -while ($call->getCallState() < \danog\MadelineProto\VoIP::CALL_STATE_ENDED) { - $MadelineProto->getUpdates(); -} -``` +[Full webradio example](https://github.com/danog/magnaluna) The wrapper consists in the `\danog\MadelineProto\VoIP` class, that can be installed by compiling the [php-libtgvoip](https://voip.madelineproto.xyz) extension. @@ -34,7 +22,7 @@ The wrapper consists in the `\danog\MadelineProto\VoIP` class, that can be insta ## Requesting a call ```php -$call = $MadelineProto->requestCall('@danogentili'); +$call = yield $MadelineProto->requestCall('@danogentili'); ``` The [requestCall](https://docs.madelineproto.xyz/requestCall.html) function accepts one parameter with the ID/username/Peer/User/InputPeer of the person to call, and returns a VoIP object that can be used to play audio files, set the hold files, change the configuration and set the output file (see the [VoIP API documentation](https://docs.madelineproto.xyz/API_docs/types/PhoneCall.html) for more info). @@ -96,11 +84,7 @@ Requesting calls is easy, just run the `requestCall` method. $controller = $MadelineProto->requestCall('@danogentili')->play('input.raw')->then('inputb.raw')->playOnHold(['hold.raw'])->setOutputFile('output.raw'); $controller->configuration['log_file_path'] = $controller->getOtherID().'.log'; -// We need to receive updates in order to know that the other use accepted the call -while ($controller->getCallState() < \danog\MadelineProto\VoIP::CALL_STATE_ENDED) { - $MadelineProto->getUpdates(); -} - +// We need to receive updates in order to know that the other use accepted the call, use an event handler ``` ## Accepting calls @@ -110,19 +94,14 @@ Accepting calls is just as easy: you will receive an [updatePhoneCall](https://d This array will contain a VoIP object under the `phone_call` key. ```php -while (true) { - $updates = $MadelineProto->getUpdates(['offset' => $offset, 'limit' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout - foreach ($updates as $update) { - \danog\MadelineProto\Logger::log([$update]); - $offset = $update['update_id'] + 1; // Just like in the bot API, the offset must be set to the last update_id - switch ($update['update']['_']) { - case 'updatePhoneCall': - if (is_object($update['update']['phone_call']) && $update['update']['phone_call']->getCallState() === \danog\MadelineProto\VoIP::CALL_STATE_INCOMING) { - $update['update']['phone_call']->accept()->play('input.raw')->then('inputb.raw')->playOnHold(['hold.raw'])->setOutputFile('output.raw'); - } +class PonyHandler extends \danog\MadelineProto\EventHandler +{ + public function onUpdatePhoneCall($update) { + if (is_object($update['phone_call']) && $update['phone_call']->getCallState() === \danog\MadelineProto\VoIP::CALL_STATE_INCOMING) { + $update['phone_call']->accept()->play('input.raw')->then('inputb.raw')->playOnHold(['hold.raw'])->setOutputFile('output.raw'); } } } ``` -Next section \ No newline at end of file +Next section