https://a.storyblok.com/f/270183/275146/254c36090a/csharp-conference-call-1.png

Crie uma teleconferência com a Voice API da Vonage e o ASP.NET Core

Publicado em December 9, 2021

Tempo de leitura: 6 minutos

Este é o sexto tutorial da série sobre como usar Voice APIs com ASP.NET. No tutorial anterior, aprendemos como encaminhar uma chamada por meio de um proxy de voz com o ASP.NET Core. No tutorial de hoje, aprenderemos como configurar uma teleconferência para que várias pessoas possam participar da mesma chamada.

Objetivos de aprendizagem

Neste tutorial, vamos:

  • Crie um aplicativo ASP.NET Core.

  • Use o NancyFX com o ASP.NET Core.

  • Crie uma aplicação de voz da Vonage.

  • Criar e devolver os NCCOs.

  • Execute e teste o código usando o Ngrok.

Pré-requisitos

  • Visual Studio 2017 ou versão posterior.

  • Um projeto criado para esta série de tutoriais, que você pode encontrar no GitHub.

  • Opcional: O CLI da Vonage.

Configuração

Para usar a Voice API da Vonage, precisamos criar um aplicativo de voz.

As etapas de configuração estão detalhadas no Voice API da Vonage com ASP.NET: Antes de começar .

Assim que a configuração for criada com sucesso, podemos passar à organização de uma teleconferência.

Como organizar uma teleconferência

Quando um usuário liga para o número da Vonage, a Voice API da Vonage enviará uma solicitação ao aplicativo para determinar como responder usando um Objeto de Controle de Chamadas da Vonage (NCCO).

O usuário será recebido e, em seguida, participará da teleconferência.

Para isso, vamos usar o NancyFX em conjunto com nosso projeto ASP.NET Core.

Antes de mais nada, precisamos adicionar a Nancy ao nosso projeto:

PM> Install-Package Nancy
PM> Install-Package Microsoft.AspNetCore.Owin

Para que o Nancy possa processar quaisquer solicitações HTTP, precisamos configurar o ASP.NET Core para usar o Nancy por meio de Owin no Configure método de Startup.cs.

using Microsoft.AspNetCore.Builder;
using Nancy.Owin;

namespace NexmoVoiceASPNetCoreQuickStarts
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseOwin(x => x.UseNancy());
        }
    }
}

O próximo passo é criar um módulo do Nancy no qual definiremos uma rota para /webhook/answer a qual responderá com o ncco retornado por GetConferenceCallNCCO()

using Nancy;
using Vonage.Voice.Nccos;

namespace NexmoDotnetCodeSnippets.Modules
{
    public class ConferenceCallModule : NancyModule 
    {
        public ConferenceCallModule()
        {
            Get("/webhook/answer/", x => {
                var response = GetConferenceCallNCCO();
                response.ContentType = "application/json";
                return response;
            });
            Post("/webhook/event", x => Request.Query["status"]);
        }

        private Response GetConferenceCallNCCO()
        {
            var ncco = new Ncco();
            ncco.Actions.Add(new TalkAction
            {
                Text = "Hello. You will now be added to the conference call.",
                Language = "en-US",
                Style = 2
            });

            ncco.Actions.Add(new ConversationAction
            {
                Name = "conference-call"
            });

            return Response.AsJson(ncco);
        }
    }
}

O código acima fará o seguinte:

Quando uma chamada for recebida, o usuário ouvirá: “Olá. Você será adicionado à teleconferência agora.” Em seguida, ele será adicionado à teleconferência.

É possível adicionar vários participantes à conferência até que todos tenham se desconectado.

Pronto! Para testar este aplicativo de exemplo, são necessárias mais algumas etapas de configuração.

Como conectar seu aplicativo ao Vonage

Se você está acompanhando o passo a passo até aqui, já configurou sua conta da Vonage e criou um aplicativo de voz, conforme mostrado em esta postagem. Precisamos vincular esse aplicativo a um número de telefone da Vonage para o qual vamos ligar.

Se você não tiver um número, pode adquirir um pelo painel de controle ou usando o CLI da Vonage:

vonage numbers:search US vonage numbers:buy [NUMBER] [COUNTRYCODE]

Da mesma forma que para vincular o número, você pode usar o painel ou a CLI:

vonage apps:link --number=VONAGE_NUMBER APP_ID

Precisamos informar à Vonage para qual URL enviar uma solicitação quando uma chamada for recebida — isso é chamado de answer_url. No meu caso, essa URL é http://localhost:63286/webhook/answer e ela está rodando apenas localmente.

Para disponibilizar a URL de resposta do nosso webhook, vamos usar o Ngrok.

ngrok http 63286

Agora temos um novo URL (o meu é http://<SUBDOMAIN>.ngrok.io) que pode ser usada como answer_url para o aplicativo de voz.

Atualize seu aplicativo com o seu novo answer_url. Deve ficar assim http://subdomain.ngrok.io/webhook/answer. Execute o aplicativo e teste-o chamando o TO_NUMBER.

Saiba mais

Referências e ferramentas da API

Guias de introdução da Nexmo para ASP.NET

Compartilhar:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Rabeb OthmaniEx-funcionários da Vonage

Rabeb era Developer Advocate na Nexmo, com foco em APIs de comunicação em nuvem e em ajudar desenvolvedores a terem a melhor experiência possível ao criarem seus aplicativos. Além de ganhar a vida escrevendo código, Rabeb defende a inclusão de mais mulheres e minorias no setor de tecnologia, daí seu envolvimento com a Women Who Code e com diversas comunidades tecnológicas. Ela lidera a rede Women Who Code em Bristol.