Desenvolver bots de chamadas e reuniões online no computador local

Em Executar e depurar seu aplicativo, explicamos como usar o ngrok para criar um túnel entre o computador local e a Internet. Neste tópico, saiba como você também pode usar o ngrok e seu computador local para desenvolver bots que dão suporte a chamadas e reuniões online.

Os bots de mensagens usam HTTP, mas as chamadas e os bots de reunião online usam o TCP de nível inferior. O Ngrok dá suporte a túneis TCP além de túneis HTTP.

Configurar ngrok.yml

Acesse o ngrok e inscreva-se em uma conta gratuita ou faça logon em sua conta existente. Depois de entrar, acesse o painel obtenha o token de autenticação.

Crie um arquivo ngrok.yml de configuração ngrok e adicione a linha a seguir. Para obter mais informações sobre onde o arquivo pode ser localizado, consulte ngrok:

authtoken: <Your-AuthToken>

Configurar a sinalização

Em Chamadas e em bots de reuniões online, discutimos a sinalização de chamada sobre como os bots detectam e respondem a novas chamadas e eventos durante uma chamada. Eventos de sinalização de chamada são enviados por meio de HTTP POST para o ponto de extremidade de chamada do bot.

Assim como na API de mensagens do bot, para que a Plataforma de Mídia em tempo real fale com seu bot, seu bot deve estar acessível pela Internet. O ngrok simplifica isso. Adicione as seguintes linhas ao seu ngrok.yml:

tunnels:
    signaling:
        addr: 12345
        proto: http

Configurar mídia local

Observação

Esta seção só é necessária para bots de mídia hospedados pelo aplicativo e pode ser ignorada se você não hospedar mídia por conta própria.

A mídia hospedada pelo aplicativo usa certificados e túneis TCP. As etapas a seguir são necessárias:

  1. Os pontos de extremidade TCP públicos do mngrok têm URLs fixas. Eles são 0.tcp.ngrok.io, 1.tcp.ngrok.ioe assim por diante. Você deve ter uma entrada DNS CNAME para seu serviço que aponte para essas URLs. Por exemplo, digamos que 0.bot.contoso.com se refere a 0.tcp.ngrok.io, 1.bot.contoso.com refere-se 1.tcp.ngrok.ioa e assim por diante.

  2. Um certificado SSL é necessário para suas URLs. Para facilitar, use um certificado SSL emitido para um domínio curinga. Nesse caso, seria a partir da pasta *.bot.contoso.com. Esse certificado SSL é validado pelo SDK de mídia, portanto, ele deve corresponder à URL pública do bot. Anote a impressão digital e instale-a nos certificados do computador.

  3. Agora, configure um túnel TCP para encaminhar o tráfego para o localhost. Grave as seguintes linhas em seu ngrok.yml:

    media:
        addr: 8445
        proto: tcp
    

Iniciar ngrok

Agora que a configuração do ngrok está pronta, inicie-a:

ngrok.exe start -all -config <Path to your ngrok.yml>

Isso inicia o ngrok e define as URLs públicas, que fornecem os túneis para sua localidade. A seguir, um exemplo de saída:

Forwarding  http://signal.ngrok.io -> localhost:12345
Forwarding  https://signal.ngrok.io -> localhost:12345
Forwarding  tcp://1.tcp.ngrok.io:12332 -> localhost:8445

Aqui, 12345 é a porta de sinalização, 8445 é a porta hospedada pelo aplicativo e 12332 é a porta de mídia remota exposta pelo ngrok. Observe que temos um encaminhamento de 1.bot.contoso.com para 1.tcp.ngrok.io. Isso será usado como a URL de mídia para o bot. É claro que esses números de porta são apenas exemplos e você pode usar qualquer porta disponível.

Código de atualização

Depois que o ngrok estiver em execução, atualize o código para usar a configuração que você acabou de configurar.

Atualizar sinalização

Na chamada do BotBuilder, altere o NotificationUrl para a URL de sinalização fornecida pelo ngrok.

statefulClientBuilder.SetNotificationUrl(
    new Uri("https://signal.ngrok.io/notificationEndpoint"))

Observação

Substitua o sinal pelo fornecido pelo ngrok e o NotificationEndpoint pelo caminho do controlador que recebe a notificação.

Importante

  • A URL em SetNotificationUrldeve ser HTTPS.

Sua instância local deve estar escutando o tráfego HTTP na porta de sinalização. As solicitações feitas pelas chamadas e pela plataforma de reuniões online chegarão ao bot como tráfego HTTP do localhost, a menos que a criptografia de ponta a ponta esteja configurada.

Atualizar mídia

Atualize o MediaPlatformSettings da maneira a seguir:

var mediaPlatform = new MediaPlatformSettings
{
    ApplicationId = <Your application id>
    MediaPlatformInstanceSettings = new MediaPlatformInstanceSettings
    {
        CertificateThumbprint = <Your SSL Cert thumbprint>,
        InstanceInternalPort = <Localhost media port>,
        InstancePublicPort = <Ngrok exposed remote media port>,
        InstancePublicIPAddress = new IPAddress(0x0),
        ServiceFqdn = <Media url for bot (eg: 1.bot.contoso.com)>,
    },
}

Observação

A impressão digital do certificado fornecida no MediaPlatformSettings deve corresponder ao FQDN de serviço. É por isso que as entradas DNS são necessárias.

Advertências

  • As contas gratuitas do Ngrok não fornecem criptografia de ponta a ponta. Os dados HTTPS terminam na URL do ngrok e os fluxos de dados não criptografados de ngrok para localhost. Se você precisar de criptografia de ponta a ponta, considere uma conta ngrok paga. Consulte usar túneis TLS obter etapas sobre como configurar túneis seguros de ponta a ponta.
  • Como a URL de retorno de chamada do bot é dinâmica, os cenários de chamada de entrada exigem que você atualize com frequência seus pontos de extremidade ngrok. Uma maneira de corrigir isso é usar uma conta ngrok paga, que fornece subdomínios fixos para os quais você pode apontar o bot e a plataforma.
  • Os túneis Ngrok também podem ser usados com o Azure Service Fabric. Para obter um exemplo de como fazer isso, consulte o aplicativo de exemplo HueBot.

Confira também