Artigo
· jan 11 6min de leitura

Como usar um bot do Azure para acessar o IRIS

Fui desafiado a criar um aplicativo de bot do Azure que possa recuperar e publicar dados no IRIS for Health.

 

Os dados de um paciente já foram registrados no repositório FHIR do IRIS for Health.

O MRN do paciente é 1001. O nome dele é Taro Yamad. (em japonês: 山田 太郎)

Esse bot pode publicar novas leituras de oxímetro como um recurso de observação associado ao paciente.

Visão geral de como o aplicativo de bot funciona abaixo:

 

 

(1) Em um aplicativo como o Teams, um usuário fala "Hello" (Olá).

O Teams envia a mensagem ao "Serviço de Canal Bot Framework" , hospedado pela Microsoft.

(2) O Serviço de Canal Bot Framework pergunta ao Bot.

O serviço pergunta ao Bot "Where is the endpoint?"(Onde está o endpoint?)

(3) O bot retorna as informações sobre o endpoint ao serviço.

O Bot conhece o endpoint.

(4) O serviço faz a solicitação do usuário ao endpoint.

O endpoint é um web application que é publicado no Azure web app.

(Minha amostra está escrita em Python.)  

​​(5) O endpoint cria a resposta e a envia ao serviço.

(6) O serviço recebe a resposta do endpoint e a passa ao usuário.

 

O IRIS não apareceu no fluxo acima.

Adicionei uma chamada do web application em python para a interoperabilidade do IRIS for Health. E preparei o repositório FHIR no IRIS assim:

 

 

A amostra de interoperabilidade do IRIS está aqui 👉 https://github.com/iijimam/iris-teams-interop

Você pode compilar e iniciar o contêiner com "docker-compose up -d". (Ele inclui os dados do paciente de amostra (MRN=1001) e as configurações necessárias.) 

Observação: o web application em python precisa chamar aplicativos via https. Mas removi os arquivos de certificado do meu repositório para evitar violar a política do git.

O web application em Python chama a classe dispatch REST do IRIS usando este URL "https://webserveraddress/production/request".

 

Confira as instruções abaixo para criar um aplicativo de Bot do Azure.

(1) Crie um grupo de recursos no Azure.

(2) Crie um Bot do Azure no grupo de recursos.

Você precisará confirmar seu "MicrosoftAppId" e "MicrosoftAppPassword". Vou explicar isso depois.

Se você quiser usar o bot do Teams, você precisa adicionar o canal do Teams ao bot. (O gif acima usa o canal do Teams.)

(3) Crie um web application no mesmo grupo de recursos que o bot no Azure.

Você obterá o endereço do servidor da web depois de criá-lo.

(4) Defina o endpoint na configuração do bot.

(5) Implante seu código para o web application.

Você pode escolher o repositório Git.

(6) Teste!

 

Vamos ver os detalhes!

(1) Crie um grupo de recursos no Azure.

Você pode criar um novo grupo de recursos a partir desta página (Grupos de recurso - Microsoft Azure)

Criei um novo recurso "202312ISJBotRG".

 

(2) Crie um Bot do Azure no grupo de recursos.

Depois de mover o grupo de recursos, você pode selecionar o menu "Create" (Criar).

    

Depois de criar o bot, você precisa definir "New client secret" (Novo segredo do cliente) na página [Configuration] da seguinte maneira:

Anote o caractere secreto e o valor do "Microsoft App ID".

Essas informações são necessárias para definir seu web application.

 

Se você quiser usar o bot do Teams, adicione o canal do Teams ao seu bot.

Você pode adicionar o canal do Teams usando o menu [Channels] no seu bot. (basta clicar no ícone do Teams.)

 

 

(3) Crie um web application no mesmo grupo de recursos que o bot no Azure.

Crie um web application para seu grupo de recursos. 

Volte para a página do grupo de recursos. E crie um web application assim:

 

Você pode selecionar sua "Runtime stack" (pilha de camada) favorita (o exemplo é Python 3.8), "Region" (região) e "Pricing plan" (plano de preços).

Depois de criar o aplicativo, você pode obter o endereço do servidor web na página do web application.

Precisamos definir o endereço para o código de aplicativo python. Então anote essa string. (O exemplo é "202312isjbotwebapp.azurewebsites.net")

 

Em seguida, precisamos definir o id do bot, o segredo e os detalhes de implantação.

Acesse a página [Configuration] na página do web application.

Você precisa adicionar "MicrosoftAppId" e "MicrosoftAppPassword" de "New application setting" (Configuração do novo aplicativo) a "Application settings" (Configurações do aplicativo).

(MicrosoftAppPassword é o segredo do bot que você copia na etapa (2).)

 

Em seguida, precisamos definir as "General settings" (Configurações gerais) para implantação.

 

Usei este código de exemplo 👉https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/44.prompt-for-user-input

O exemplo é simples, e é fácil de entender o que devo escrever sobre a comunicação do web application com o bot.

Atualizei alguns códigos nos diretórios bots e data_models.

Se você for executar o código no ambiente local, não precisa atualizá-lo.

Mas, se você quiser executá-lo no Azure web application, precisa atualizar o código de app.py assim:

def init_func(argv):
    APP = web.Application(middlewares=[aiohttp_error_middleware])
    APP.router.add_post("/api/messages", messages)
    return APP

if __name__ == "__main__":
    try:
        #web.run_app(APP, host="localhost", port=CONFIG.PORT)
        web.run_app(APP, host="0.0.0.0", port=CONFIG.PORT)
    except Exception as error:
        raise error

Adicionei esta chamada "python3.8 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func" para iniciar um web application em Python no Azure.

Se você quiser saber os detalhes, consulte este URL👉https://stackoverflow.com/questions/60507967/running-an-python-app-as-an-azure-web-app

 

Meu código está aqui 👉 https://github.com/iijimam/teams-bot

Para executá-lo, você precisa atualizar partes do código.

  • Linha  15 e 16 de config.py: você precisa atualizar as informações do seu bot.
  • Linha 10 de GoIRIS.py : você precisa atualizar o endpoint que é o servidor REST do IRIS.

 

(4) Defina o endpoint na configuração do bot.

Acesse a página Configuration do bot.

Defina o endereço do servidor web + "/api/messages" como "Messaging endpoint".

 

 

(5) Implante seu código para o web application.

Eu uso o repositório git. É fácil implantar para o web application no Azure!!

Você pode definir as informações na página [Deployment Center] (Centro de implantação) do web application.

Após a implantação, você pode começar a testar!

 

(6) Teste!

Você pode testar seu aplicativo usando o "Test in Web Chat" (Testar no web chat) na página do bot.

 

Se você adicionar o canal do Teams, pode testar no Teams.

 

Depois de clicar em [Open in Teams] (Abrir no Teams), você pode abrir seu chat do teams e testar.😀

 

Bônus:

Você pode testar sem implantar seu aplicativo como um web application do Azure.

Quando o aplicativo em python e a interoperabilidade do IRIS estiverem prontos, você pode publicar esse aplicativo usando ngrok assim:

ngrok http 8000 --host-header=172.18.28.1:8000

ngrok pode oferecer um serviço de tunelamento.  Posso acessar minha porta local diretamente da área pública usando o serviço de tunelamento ngrok. 

E precisamos mudar o endpoint na configuração do bot assim:

Depois de configurado, posso testar usando o web chat.

Discussão (0)0
Entre ou crie uma conta para continuar