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:
Os pontos de extremidade TCP públicos do mngrok têm URLs fixas.
0.tcp.ngrok.io
São ,1.tcp.ngrok.io
e assim por diante. Você deve ter uma entrada DNS CNAME para seu serviço que aponte para essas URLs. Por exemplo, digamos que0.bot.contoso.com
se refere a0.tcp.ngrok.io
,1.bot.contoso.com
refere-se1.tcp.ngrok.io
a e assim por diante.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.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
SetNotificationUrl
deve 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.