Recevoir un appel entrant

Cet extrait de code montre comment recevoir un appel entrant.

Exemple

Conditions préalables

npm install express

Rédiger le code

Ajouter ce qui suit à receive-an-inbound-call.js:

const Express = require('express');

const app = new Express();

const onInboundCall = (request, response) => {
  const from = request.query.from;
  const fromSplitIntoCharacters = from.split('').join(' ');

  const ncco = [
    {
      action: 'talk',
      text: `Thank you for calling from ${fromSplitIntoCharacters}`,
    },
  ];

  response.json(ncco);
};

app.get('/webhooks/answer', onInboundCall);

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

node receive-an-inbound-call.js

Conditions préalables

Ajouter ce qui suit à build.gradle:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier ReceiveInboundCall:

embeddedServer(Netty, port = 8000) {
    routing {
        get("/webhooks/answer") {
            val from = call.request.queryParameters["from"]?.replace("", "")
            call.response.header("Content-Type", "application/json")
            call.respond(
                Ncco(
                    talkAction("Thank you for calling from $from")
                ).toJson()
            )
        }
    }
}.start(wait = true)

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.voice par le paquet contenant ReceiveInboundCall:

gradle run -Pmain=com.vonage.quickstart.kt.voice.ReceiveInboundCall

Conditions préalables

Ajouter ce qui suit à build.gradle:

implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier InboundCall:

/*
 * Route to answer incoming call.
 */
Route answerRoute = (req, res) -> {
    String from = req.queryParams("from").replace("", " ");
    TalkAction message = TalkAction
            .builder(String.format("Thank you for calling from %s", from))
            .build();

    res.type("application/json");

    return new Ncco(message).toJson();
};

/*
 * Route to print out call event info.
 */
Route eventRoute = (req, res) -> {
    System.out.println(req.body());
    return "";
};

Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute);
Spark.post("/webhooks/events", eventRoute);

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.voice par le paquet contenant InboundCall:

gradle run -Pmain=com.vonage.quickstart.voice.InboundCall

Conditions préalables

Install-Package Vonage

Rédiger le code

Ajouter ce qui suit à ReceiveInboundCallController.cs:

[HttpGet("webhooks/answer")]
public string Answer()
{            
    var talkAction = new TalkAction
    { 
        Text = "Thank you for calling from " +
        $"{string.Join(" ", Request.Query["from"].ToString().ToCharArray())}"
    };
    var ncco = new Ncco(talkAction);
    return ncco.ToString();
}

Voir la source complète

Conditions préalables

composer require slim/slim:^3.8 vonage/client

Rédiger le code

Ajouter ce qui suit à index.php:

require 'vendor/autoload.php';

$app = new \Slim\App();

$app->get('/webhooks/answer', function (Request $request, Response $response) {
    /** @var \Vonage\Voice\Webhook\Answer $call */
    $call = \Vonage\Voice\Webhook\Factory::createFromRequest($request);
    $fromSplitIntoCharacters = implode(" ", str_split($call->getFrom()));

    $ncco = new \Vonage\Voice\NCCO\NCCO();
    $ncco->addAction(
        new \Vonage\Voice\NCCO\Action\Talk('Thank you for calling from ' . $fromSplitIntoCharacters)
    );

    return new JsonResponse($ncco);
});

$app->run();

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

php -S localhost:3000 -t .

Conditions préalables

pip install vonage python-dotenv fastapi[standard]

Rédiger le code

Ajouter ce qui suit à receive-an-inbound-call.py:

from fastapi import FastAPI, Query
from vonage_voice import Talk

app = FastAPI()


@app.get('/webhooks/answer')
async def answer_call(from_: str = Query(..., alias='from')):
    from_ = '-'.join(from_)
    return [
        Talk(text=f'Thank you for calling from {from_}').model_dump(
            by_alias=True, exclude_none=True
        )
    ]

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

fastapi dev voice/receive-an-inbound-call.py

Conditions préalables

gem install sinatra sinatra-contrib

Rédiger le code

Ajouter ce qui suit à inbound_tts_call.rb:

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
    JSON.parse(request.body.read)
  end
end

before do
  content_type :json
end

route :get, :post, '/webhooks/answer' do
  from = params['from'] || parsed_body['from']
  from_split_into_characters = from.split('').join(' ')

  [{
    action: 'talk',
    text: "Thank you for calling from #{from_split_into_characters}"
  }].to_json
end

set :port, 3000

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

ruby inbound_tts_call.rb

Essayez-le

Lorsque vous appelez votre Numbers Vonage, vous entendrez un message de synthèse vocale.

Pour en savoir plus

  • Réponse vocale interactive (RVI) - Construire un système téléphonique automatisé permettant aux utilisateurs de saisir des informations à l'aide du clavier et d'entendre une réponse vocale.
  • Voice Bot avec Google Dialogflow - Ce guide vous aidera à démarrer avec un exemple de bot Dialogflow et à interagir avec lui à partir d'appels téléphoniques en utilisant les exemples de codes de référence fournis en utilisant l'API Voice de Vonage.
  • Appel masqué - Permettre aux utilisateurs de s'appeler les uns les autres, tout en préservant la confidentialité de leurs numéros réels.
  • Conférence téléphonique - Ce guide explique les deux concepts que Vonage associe à un appel, un segment et une conversation.
  • Suivi des appels - Gardez la trace des campagnes qui fonctionnent bien en utilisant des numéros différents pour chacune d'entre elles et en effectuant le suivi des appels entrants. Ce guide vous montre comment traiter les appels entrants, les connecter à un autre numéro et suivre les numéros de téléphone qui ont appelé chacun de vos numéros Vonage.