Partilhar via


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

Em Executar e depurar a sua aplicação, explicamos como utilizar 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 ficheiro ngrok.yml de configuração ngrok e adicione a seguinte linha. 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. 0.tcp.ngrok.ioSão , 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>

Esta ação inicia o ngrok e define os URLs públicos, que fornecem os túneis para o localhost. 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. Isto é utilizado como o URL de multimédia do 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. Os pedidos feitos pela plataforma de chamadas e reuniões online chegam ao bot como tráfego HTTP localhost, a menos que a encriptação ponto a ponto 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 forma de corrigir esta situação é utilizar uma conta ngrok paga, que fornece subdomínios fixos para os quais 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