Como criar um chatbot SMS escalável usando o Twilio, Python e o Planilhas Google (com código gratuito)
Muitos de nós estamos ajudando empresas que enfrentam tempos difíceis ou também enfrentamos tempos difíceis. Se você estiver trabalhando para uma empresa (ou cliente) que está com dificuldades, usar os chatbots por SMS pode ser uma maneira de olhar para fora da lista normal de soluções e ajudá-los a obter sucesso de uma maneira completamente diferente. Se você é um vendedor que procura emprego, adicionar isso à sua lista de habilidades pode significar que você segue em frente enquanto muitas das portas habituais estão fechadas ou abre novas portas.
O que você receberá
Nesta postagem, dou instruções e código para produzir não apenas um, mas uma série de chatbots baseados em texto que o Planilhas Google pode gerenciar.
O exemplo aqui está configurado para funcionar com restaurantes, mas pode ser adaptado para funcionar com qualquer empresa que precise receber pedidos, compará-los com inventário / menus e anotá-los para atendimento.
Depois que o sistema estiver configurado, a criptografia não será necessária para criar um novo chatbot baseado em SMS para um novo negócio. Além disso, essa empresa poderá gerenciar detalhes importantes (como pedidos recebidos e um menu) simplesmente atualizando uma planilha do Google, tornando tudo isso muito mais acessível do que a maioria das outras opções.
Mas primeiro, algum contexto.
Algum contexto
Em setembro de 2017, como um dos meus primeiros projetos apaixonados no Distilled, escrevi uma postagem no blog da Moz que dizia às pessoas como conversar e dar exemplos de código.
Em abril, recebi um e-mail de um homem chamado Alexandre Silvestre. Alex havia lançado “um esforço sem fins lucrativos para ajudar os pequenos empresários locais a enfrentar esses momentos difíceis, salvar o maior número possível de empregos e continuar a servir a comunidade, ajudando a achatar a curva”.
Esse esforço começou com foco em restaurantes. Alex encontrou meu post de 2017 (Holy Moly, o marketing de conteúdo funciona!) E me perguntou se eu poderia ajudar sua equipe a criar um chatbot. Concordamos em alguns requisitos básicos para o bot:
- Tinha que funcionar inteiramente dentro de uma mensagem de texto (e se o pedido fosse muito complicado, você precisava fazer uma ligação diretamente para o restaurante).
- Executá-lo tinha que ser o mais livre possível.
- Os restaurantes precisavam verificar pedidos, atualizar menus etc., sem criar contas especiais.
A solução que combinamos tinha três partes:
- Twilio (pago) – fornece o número de telefone e lida com a maioria das conversas de ida e volta.
- Google Cloud Functions (semi-gratuito): quando um URL é chamado, ele executa o código (incluindo a atualização de nosso banco de dados para o restaurante) e retorna uma resposta.
- Planilhas do Google (grátis): nossa plataforma de banco de dados. Temos uma planilha que lista todas as empresas que usam nosso chatbot e elas estão vinculadas às planilhas individuais do Google para cada empresa.
Vou levá-lo através de cada um desses componentes e dizer como trabalhar com eles.
Se você retornar a esta postagem, ou apenas precisar de ajuda com uma área, sinta-se à vontade para pular para a parte específica que lhe interessa:
-Preços
—Twilio
– folhas do Google
– Recursos do Google Cloud
—Tente o bot
– Quebre as coisas e divirta-se
– PostScript – hacks estranhos
Preços
Tudo isso deve funcionar bem barato: estou falando como quatro centavos por pedido.
Ainda assim, sempre verifique se os alertas de preço chegam a um endereço de email que você monitora ativamente.
Quando você está começando isso ou faz uma alteração (como adicionar novos recursos ou novos negócios), verifique seus créditos nas próximas semanas para saber o que está acontecendo.
Twilio
Os números de telefone locais do Twilio custam cerca de US $ 1,00 por mês. O envio e o recebimento de mensagens de texto custam cerca de US $ 0,0075, e o Twilio Studio, que usamos para grande parte da “conversa”, custa US $ 0,01 cada vez que é ativado (os primeiros 1.000 por mês são gratuitos).
Portanto, supondo que você tenha 2.500 solicitações de texto por mês e cada pedido receba cerca de cinco mensagens de texto, o total será de aproximadamente US $ 100 por mês.
Planilhas do Google
O Planilhas Google é gratuito e ótimo. Viva o Planilhas Google.
Recursos do Google Cloud
O Google compartilha todos os detalhes de preços aqui, mas o importante é saber:
1. Créditos promocionais
Você obtém uma avaliação gratuita que dura até um ano e inclui US $ 300 em créditos promocionais; portanto, você a gastará antes de gastar seu dinheiro. Gastamos US $ 0,00 (incluindo créditos promocionais) no final de um mês de teste. Isso ocorre porque também há um subsídio mensal gratuito.
2. Subsídio grátis e estrutura de preços
Mesmo além dos créditos gratuitos, o Google oferece um subsídio gratuito todos os meses. Se assumirmos que cada pedido exige aproximadamente 5 ativações do nosso código e nosso código leva até cinco segundos para ser executado a cada vez (o que é um tempo, mas às vezes o Google Sheets é lento), poderíamos estar recebendo mais de 400.000 pedidos por mês antes de mergulharmos em créditos promocionais.
Twilio
O Twilio é uma plataforma de pagamento que permite comprar um número de telefone e fazer com que esse número envie automaticamente determinadas respostas com base em tickets.
Se você não quiser ler mais sobre o Twilio e apenas desejar o fluxo de chatbot gratuito do Twilio, aqui está.
Etapa 1: compre um número de telefone Twilio
Depois de comprar um número de telefone, você pode receber mensagens de texto para esse número e elas serão processadas na sua conta do Twilio. Você também pode enviar mensagens de texto desse número.
Etapa 2: encontre seu número de telefone
Você pode visualizar sua lista de números de telefone adquiridos clicando no menu Twilio no canto superior esquerdo e depois em “Números de telefone”. Ou você pode simplesmente ir para números de telefone / de entrada.
Depois de ver seu número de telefone listado, anote-o.
Etapa 3: crie seu Studio Flow
O Studio é o editor de arrastar e soltar do Twilio que permite criar a estrutura da sua conversa. Um “fluxo” de estudo é apenas o nome de uma conversa específica que você construiu.
Você pode acessar o Twilio Studio clicando no menu Twilio novamente e clicando em “Studio” em “Tempo de execução”.
Crie um novo fluxo clicando em “Criar um fluxo”.
Ao criar um novo fluxo, você terá a opção de começar do zero ou usar uma das opções internas para criar seu fluxo para você (embora elas não sejam tão profundas quanto o modelo que eu sou) compartilhando aqui).
Se você deseja usar uma versão do fluxo que Alex e eu criamos, selecione “Importar de JSON” e clique em “Avançar”. Em seguida, baixe esse arquivo e copie o conteúdo na caixa exibida.
Verifique se ele começa com uma única tecla {e termina com uma única tecla}. A caixa que aparece automaticamente terá {} e, se você não as excluir antes de colar, será duplicada e não aceitará sua entrada.
Se tudo correr bem, você verá um fluxo parecido com este:
Você pode estar se perguntando: o que, em nome de tudo que é sagrado, é esse emaranhado de espaguete colorido?
Esse é o fluxo do Twilio Studio que criamos, e não se preocupe, ele basicamente se divide em uma série de perguntas de múltipla escolha, onde a resposta para cada um determina para onde você irá no fluxo.
Tudo o que você pode ver na tela é um widget da biblioteca de widgets do Twilio Studio conectado, juntamente com as condições do tipo “se é isso então isso”.
O processo do Studio Flow
Antes de entrar em blocos específicos no processo, aqui está uma visão geral do que acontece:
- Um cliente envia um dos nossos números Twilio
- Com base no número específico enviado, procuramos o restaurante associado. Em seguida, usamos o nome do restaurante e o menu salvo para enviar uma mensagem ao cliente.
- Se o cliente tentar fazer o pedido fora do menu, conectaremos uma chamada ao restaurante
- Se o cliente escolher algo do nosso menu, pedimos o nome dele, registramos o pedido na folha do restaurante e informamos quando chegar para coletar o pedido.
- Quando / quando o usuário envia uma mensagem para nos dizer que está fora do restaurante, perguntamos se ele está a pé / uma descrição do seu veículo. Registramos a descrição do veículo na mesma folha de restaurante.
Vejamos alguns exemplos de blocos de construção, não é?
Gatilho inicial
O gatilho inicial aparece logo no início de cada fluxo e divide o contato recebido com base em se é uma mensagem de texto, uma ligação telefônica ou se o código está acessando.
“Mensagem recebida” significa que o contato foi através de uma mensagem de texto. Só precisamos nos preocupar com isso por enquanto, então vamos nos concentrar na linha esquerda.
Registre o fato de que estamos iniciando uma nova interação
Em seguida, usamos um bloco “Definir variáveis”, que você pode usar na biblioteca de widgets.
O bloco “Definir variáveis” permite salvar as informações de registro às quais queremos nos referir posteriormente. Por exemplo, começamos simplesmente definindo o “estágio” da nossa interação. Dizemos que o estágio está “começando”, pois estamos no início da interação. Posteriormente, verificaremos qual é o valor do estágio, tanto no Studio quanto em nosso código externo, para saber o que fazer e quando.
Obtenha nosso menu
Assumimos que, se alguém nos enviou uma mensagem, ativando o chatbot, eles estão procurando fazer um pedido, portanto, o próximo passo é determinar qual é o menu correspondente.
Agora, podemos escrever o menu diretamente no Studio e dizer que toda vez que alguém nos envia uma mensagem, respondemos com a mesma lista de opções. Mas isso tem alguns problemas.
Primeiro, isso significa que, se quisermos configurar isso para vários restaurantes, teremos que criar um novo fluxo para cada um.
O maior problema é que os restaurantes costumam mudar seus menus. Se queremos que isso seja algo que podemos oferecer a muitos restaurantes diferentes, não queremos gastar todo o nosso tempo atualizando manualmente o Twilio toda vez que um restaurante fica sem um ingrediente.
Então, o que realmente precisamos é que os restaurantes possam listar seus próprios menus. É aqui que o Google Sheets entra, mas veremos mais adiante. No Twilio, precisamos apenas solicitar informações externas e enviá-las ao usuário. Para fazer isso, usamos um widget Webhook:
Esse widget faz uma solicitação para um URL, obtém a resposta e nos permite usar o conteúdo da resposta em nossas mensagens e fluxo.
Se a solicitação para o URL for bem-sucedida, o Twilio continuará automaticamente com nossa etapa de sucesso; caso contrário, podemos configurá-lo para enviar uma resposta “Uau, algo deu errado” com a opção Falha.
Nesse caso, nosso Webhook fará uma solicitação para o URL dos recursos do Google Cloud (mais sobre isso mais tarde). A solicitação que enviarmos incluirá informações sobre o usuário e o que precisamos que o código faça. As informações estarão no formato JSON (o mesmo formato que usamos para importar o fluxo do Twilio que compartilhei anteriormente).
Nosso JSON incluirá o número de telefone específico do Twilio ao qual uma mensagem foi enviada e usaremos esse número para diferenciar os restaurantes, bem como o número de telefone que nos contatou. Também incluirá o conteúdo da mensagem de texto que recebemos e o “cenário” definido anteriormente, para que o código saiba o que o usuário está procurando.
Em seguida, o código fará algumas coisas (veremos mais adiante) e retornará suas próprias informações. Assim, podemos dizer ao Twilio para usar partes da resposta nas mensagens.
Envie uma mensagem em resposta
Podemos então usar as informações que recebemos para criar e enviar uma mensagem ao usuário. O Twilio lembrará o número com o qual você está conversando e enviará suas mensagens para esse número.
Esse é o widget “Enviar e aguardar resposta”, o que significa que, depois que essa mensagem for enviada, o Twilio assumirá que a conversa continua em vez de encerrá-la lá.
Nesse caso, estamos escrevendo nossa mensagem de boas-vindas. Poderíamos escrever conteúdo simples, mas queremos usar algumas das variáveis que obtivemos do nosso widget Webhook. Chamamos esse widget específico de Webhook de “get_options”, para acessar o conteúdo obtido digitando:
{{widgets.get_options
A resposta volta em JSON e, felizmente, o Twilio a divide automaticamente para nós.
Podemos acessar partes individuais da resposta digitando “analisado” e, em seguida, o rótulo ao qual fornecemos essas informações em nossa resposta. No momento, a resposta do código ficou assim:
{“Nome”: restaurant_name,
“Platos_cadena”: “Você pode escolher entre pizza Margherita, pizza havaiana, pizza vegetariana”
“Adições”: “grande, média, pequena”}
Para obter o menu disponível, digite “{{widgets.get_options.parsed.dishes_string}}” e, em seguida, escreva a seguinte mensagem que será enviada às pessoas que contatam o bot:
Tomar uma decisão com base em uma mensagem
Não podemos supor que todo mundo vai usar o bot exatamente da mesma maneira, por isso devemos poder mudar o que fazemos sob certas condições. O widget “Dividir com base em …” é como selecionamos determinadas condições e definimos o que fazer se elas forem atendidas.
Nesse caso, usamos o conteúdo da resposta à nossa mensagem anterior que acessamos usando {{options_follow_up.inbound.Body}}. “Options_follow_up” é o nome do widget Send and Wait que acabamos de falar, “inbound” significa a resposta e “Body” significa o texto que ele contém.
Então estabelecemos uma condição. Se o usuário responder com algo como “outro”, “não”, “ajuda” etc., ele será enviado para outra faixa para receber uma ligação. Se eles responderem com algo que não está nessa lista, eles podem estar tentando fazer um pedido. Por isso, pegamos seu pedido e verificamos com nosso código:
Configurar uma chamada
Se o usuário disser que deseja algo fora do menu, teremos que fazer uma ligação com o restaurante. Fazemos isso chamando o usuário primeiro:
Então, quando eles atendem, eles conectam essa chamada ao número do restaurante que já pesquisamos em nossas planilhas:
Etapa 4: selecione seu fluxo de estudo para este número de telefone
Siga as instruções na etapa dois para retornar à lista específica do número de telefone que você comprou. Em seguida, role para baixo e selecione o Studio Flow que você criou.
Planilhas do Google
Este chatbot usa duas planilhas do Google.
Folha de pesquisa gratuita
A planilha de pesquisa contém uma lista dos números de telefone do Twilio, o restaurante ao qual foram atribuídos e o URL da planilha do Google que contém os detalhes desse restaurante, para que possamos saber onde procurá-los.
Você precisará criar uma cópia da planilha para usá-la. Incluí uma linha na planilha que compartilhei, explicando cada uma das colunas. Sinta-se à vontade para removê-lo quando souber o que está fazendo.
Folha de restaurante de amostra grátis
A folha específica do restaurante é onde incluímos todas as informações do restaurante em uma série de guias. Você precisará criar uma cópia da planilha para usá-la.
Encomendas
A guia pedidos é usada principalmente pelo nosso código. Ele será escrito automaticamente no horário do pedido, no nome do cliente, no número de telefone do cliente e nos detalhes do pedido. Por padrão, ele escreverá FALSE em “PAGO / PRONTO?” coluna, que o restaurante deve atualizar.
Na fase final, o script adicionará VERDADEIRO a “CLIENTE AQUI?” coluna e forneça a descrição do carro na coluna “PICK UP Information”.
Tempo de espera
Essa é uma guia bastante simples, pois contém uma célula em que o restaurante escreve quanto tempo levará até que os pedidos estejam prontos. Nosso código extrairá isso e o entregará ao Twilio para que os clientes saibam quanto tempo provavelmente estarão esperando.
Pratos disponíveis e guias adicionais
O restaurante lista os pratos que agora estão disponíveis, juntamente com adaptações simples a esses pratos, e esses menus são enviados aos clientes quando eles entram em contato com o restaurante. Quando o código recebe um pedido, ele também o verifica na lista de pratos enviados para ver se o cliente está selecionando uma das opções.
Script usando a guia da folha
Você não precisa tocar nisso, é apenas uma precaução para evitar a substituição acidental de nosso código.
Imagine uma situação em que nosso código receba um pedido, encontre a primeira linha vazia na folha de pedidos e grave esse pedido lá em baixo. No entanto, ao mesmo tempo, alguém faz um pedido para o mesmo restaurante, outra instância do nosso código também procura a primeira linha vazia, a seleciona e as duas escrevem ao mesmo tempo. Perderíamos pelo menos um pedido, mesmo que o código pense que está tudo bem.
Para tentar evitar que, quando nosso código começa a usar a planilha, a primeira coisa a fazer é alterar o valor de “Script que usa a planilha” para TRUE e escrever quando ele começa a usá-la. Quando terminar, altere o valor novamente para FALSE.
Se o nosso script usar a planilha e você vir que “O script que usa a planilha” está definido como TRUE, ele aguardará até que esse valor se torne FALSE e anote o pedido.
Como uso as folhas?
Exemplo de folha de restaurante:
- Faça uma cópia da folha de amostra do restaurante.
- Preencha todos os detalhes do seu restaurante de teste.
- Copie o URL da planilha.
Folha de pesquisa:
- Faça uma cópia da folha de pesquisa (você só precisa criar uma).
- Não exclua nada da coluna “ID extraído”, mas substitua todo o resto.
- Coloque o seu número Twilio na primeira coluna.
- Cole o URL do seu restaurante de teste na coluna URL da planilha.
- Adicione o número de telefone da sua empresa na coluna final.
Compartilhar:
- Encontre o endereço de e-mail “Conta de serviço” (que eu o direcionarei na seção Recursos da nuvem).
- Verifique se as duas folhas são compartilhadas com esse endereço de e-mail com acesso de edição.
Criando um novo restaurante:
- Sempre que precisar criar um novo restaurante, basta fazer uma cópia da folha do restaurante.
- Certifique-se de marcar “compartilhar com as mesmas pessoas” ao copiá-lo.
- Limpe os detalhes atuais.
- Cole o novo URL da planilha do Google em uma nova linha na sua planilha de pesquisa.
Quando o código for executado, ele abrirá a planilha de pesquisa, use o número de telefone do Twilio para encontrar o ID da folha específica para esse restaurante, vá para essa folha e retorne o menu.
Recursos do Google Cloud
O Google Cloud Functions é uma maneira simples de executar automaticamente seu código on-line sem precisar configurar servidores ou instalar vários programas especiais em algum lugar para garantir que seu código seja transferível.
Se você não deseja mais informações sobre o Google Cloud e apenas deseja que o código seja executado, aqui está o código python gratuito para o chatbot.
O que o código está fazendo?
Nosso código não tenta lidar com nenhuma das conversas reais, apenas recebe solicitações do Twilio, incluindo detalhes sobre o usuário e em que estágio ele está, além de executar algumas funções simples.
Etapa 1: “Iniciar”
O código recebe uma mensagem do Twilio que inclui o número do Twilio que foi ativado e o estágio em que o usuário está (início). Com base no estágio “start”, o código ativa a função start.
Encontre a folha de restaurante específica com base no número do Twilio e, em seguida, retorne o menu para esse restaurante.
Ele também envia coisas para o Twilio, como o número específico do restaurante e uma versão condensada do menu e adições para que possamos verificar os pedidos.
Etapa 2: “Escolhido”
O código recebe o estágio em que o usuário (escolhido) é, assim como sua mensagem de pedido, a identificação da folha do restaurante e o menu condensado (que ele enviou ao Twilio anteriormente), portanto, não precisamos procurar por eles. coisas de novo.
Com base no estágio “escolhido”, o código ativa a função escolhida. Verifique se o pedido corresponde ao nosso menu condensado. Caso contrário, ele diz a Twilio que a mensagem não soa como uma ordem.
Se o pedido corresponder ao nosso menu, escreva o pedido na primeira linha em branco. Ele também cria um ID do pedido, que é uma combinação do horário e parte do número de telefone do usuário.
Ele envia uma mensagem ao Twilio dizendo se o pedido corresponde ao nosso menu e, se ele corresponde ao nosso menu, qual é o número do pedido.
Etapa 3: “Chegou”
O código recebe o estágio em que o usuário está (chegou) e ativa a função de chegada. Ele também recebe a mensagem descrevendo o veículo do usuário, o ID da folha específica do restaurante e o número do pedido, todos os quais ele havia dito anteriormente ao Twilio.
Pesquise a folha do restaurante e encontre o ID do pedido que corresponde ao que foi enviado e atualize a linha para mostrar que o usuário chegou e a descrição do carro.
Twilio lida com todo o contexto
Pode parecer estranho para você que, sempre que o código encontra algumas informações (por exemplo, o ID da planilha a ser pesquisada), ele envia essas informações ao Twilio e as solicita novamente mais tarde. Isso ocorre porque nosso código não sabe o que está acontecendo, exceto pelo que o Twilio diz. Toda vez que ativamos nosso código, ele começa exatamente da mesma maneira; portanto, não há como saber qual usuário está enviando mensagens de texto para o Twilio, em que estágio eles estão ou até em que restaurante estamos falando.
Twilio se lembra dessas coisas durante o curso da interação, por isso as usamos para lidar com todas essas coisas. Nosso código é um “criador” muito simples: ele não “sabe” nada por mais de cinco segundos por vez.
Como eu configuro o código?
Não tenho tempo para descrever como usar o Google Cloud Functions em profundidade ou como codificar em Python, mas o código que compartilhei acima inclui algumas notas explicando o que está acontecendo, e falarei com você através das etapas específicas deste processo.
Etapa 1: configurar
Certificar-se de que:
Etapa 2: criar uma nova função
Vá aqui e clique em “criar uma nova função”. Se você não criou um projeto antes, pode ser necessário fazê-lo primeiro, e poderá nomear o projeto como desejar.
Etapa 3: defina os detalhes da sua função
A captura de tela abaixo fornece muitos detalhes necessários. Eu recomendo que você escolha 256 MB de memória, isso deve ser suficiente. Se você encontrar problemas (ou se quiser ser mais cauteloso desde o início), aumente para 512 MB.
Certifique-se de selecionar HTTP como gatilho e anote o URL que ele fornece (se você esquecer que sempre poderá encontrar o URL, vá para a guia “Trigger” da função).
Verifique também a opção para permitir acesso não autenticado (dessa forma, o Twilio poderá iniciar a função).
Selecione “Editor Online” e cole o código Gist que eu lhe dei (é altamente comentado, eu recomendo que você o leia para se certificar de que está satisfeito com o que está fazendo).
Clique em “REQUISITOS.TXT” e cole as seguintes linhas de bibliotecas para usar:
Verifique se “function to run” é o SMS e clique no menu suspenso “Environment Variables”.
Assim como eu fiz antes, clique em “+ ADICIONAR VARIABLE”, digite “spreadsheet_id” na coluna “Nome” e na coluna “Valor”, cole o ID da sua planilha de pesquisa. Você obterá o ID consultando o URL da planilha de pesquisa e copiando tudo entre as duas últimas barras (em vermelho abaixo).
Clique no menu suspenso “Conta de serviço”. Ele deve aparecer com a “Conta de serviço padrão do Google App Engine” e fornecer um endereço de e-mail (como mostrado abaixo). Esse é o endereço de e-mail com o qual você precisa compartilhar todas as planilhas do Google. Anote-o em algum lugar e adicione-o como um usuário de edição para as folhas específicas de sua pesquisa e restaurante.
Depois de fazer tudo isso, clique em “Implantar”.
Depois de implantar, você deve retornar à tela principal para a sua função de nuvem. O visto verde no canto superior esquerdo informa que tudo está funcionando.
Etapa 4: ativar a API de planilhas
Na primeira vez em que seu código tenta acessar o Planilhas Google, talvez você não consiga, porque você precisa ativar a API do Planilhas Google para sua conta. Vá aqui, selecione o projeto no qual você está trabalhando com o menu suspenso no canto superior esquerdo e clique no grande botão azul “ENABLE”.
Etapa 5: volte ao Twilio e cole o gatilho HTTP para o seu código
Você se lembra da URL de ativação que anotamos quando criamos nossa função? Volte ao seu Twilio Studio e encontre todos os blocos com o > assine no canto superior esquerdo:
Clique em cada um e cole seu URL do Google Cloud na caixa URL do PEDIDO, no lado direito da tela:
Experimente o bot
Até agora você já deve ter seu recurso de nuvem configurado. Você também deve ter as planilhas do Google configuradas e compartilhadas com sua conta de serviço da função de nuvem.
O próximo passo é testar o bot. Comece enviando uma mensagem de texto para o seu número Twilio com a palavra “ordem” para fazê-lo funcionar. Você deve responder com um menu que seu código extrai da planilha do Google específica de seu restaurante. Siga as etapas que ele envia até o final e verifique sua Planilha do Google para garantir a atualização correta.
Se, por algum motivo, não funcionar, há dois lugares que você pode verificar. O Twilio mantém um registro de todos os erros encontrados, clicando no pequeno símbolo “Debugger” no canto superior direito:
O Google também acompanha tudo o que acontece com o recurso de nuvem. Isso inclui notificações sem erros. Você pode ver tudo isso clicando em “VER REGISTROS” na parte superior:
Conclusão: quebrar coisas e se divertir
Tudo isso não é de forma alguma perfeito, e tenho certeza de que há coisas que eu poderia adicionar e melhorar, mas essa é uma maneira de criar uma rede de chatbots escaláveis, cada um específico para um negócio diferente e cada um parcialmente gerenciado por esse negócios a um custo mínimo.
Experimente, quebre, melhore, quebre e comece de novo, e deixe-me saber o que você pensa!
Postscript: hacks estranhos
Esse bit é apenas para pessoas interessadas, mas, como o fizemos deliberadamente com muito pouco dinheiro, encontramos alguns problemas estranhos, principalmente em torno de solicitações ao nosso bot quando ele não é ativado por um tempo.
Quando o Twilio recebe mensagens pela primeira vez em muito tempo, ele é ativado rapidamente e espera que outras coisas também. Por exemplo, quando o Twilio faz solicitações ao nosso código, ele assume que o código falhou se levar mais de cinco segundos. Isso não é incomum: muitas plataformas de bate-papo exigem um tempo máximo de resposta de cinco segundos.
As funções de nuvem podem ser executadas muito rapidamente, mesmo com alocações de memória mais baixas, mas o Planilhas Google sempre parece um pouco lento quando acessado pela API. De fato, o Planilhas Google é particularmente lento se não tiver sido acessado em algum momento.
Isso pode significar que, se ninguém usou seu bot recentemente, a API de planilhas do Google leva muito tempo para responder pela primeira vez e o Twilio desiste antes que nosso código possa retornar, causando um erro.
Existem algumas partes do nosso script criadas para evitar isso.
Tentando novamente
A primeira vez que ativamos nosso recurso de nuvem, não queremos que nada realmente mude, apenas queremos informações. Assim, no Twilio, começamos criando uma variável chamada “tentativas” e definindo o valor como 0.
Se a solicitação falhar, verificamos se o valor de nova tentativa é 0. Nesse caso, configuramos o valor de nova tentativa como 1 e tentamos novamente. Si falla por segunda vez, no queremos seguir haciéndolo para siempre, por lo que enviamos un error y nos detenemos allí.
Despertar la sábana
La segunda vez que activamos nuestra función en la nube, queremos que haga algo. No podemos hacerlo nuevamente si no regresa a tiempo porque terminaremos con pedidos duplicados, lo cual es un dolor de cabeza para el restaurante.
En cambio, durante una parte anterior del intercambio, realizamos un cambio inútil en una de nuestras hojas, solo para que esté listo para cuando realicemos el cambio importante.
En nuestro flujo conversacional nosotros:
- Enviar el menú
- Obtener la respuesta
- Pregunte por el nombre del usuario
- Escribe el pedido
No necesitamos hacer nada en la hoja hasta el paso cuatro, pero después de obtener la respuesta del usuario (antes de preguntar su nombre), activamos nuestro código una vez para escribir algo inútil en la hoja de pedido. Le decimos a Twilio, si eso tiene éxito o falla, continúe con la interacción, porque no importa en ese momento si hemos regresado a tiempo. Luego, con suerte, cuando escribamos nuestro pedido, Google Sheets está listo para un uso real.
Hay limitaciones
Google Sheets no es la base de datos ideal: es lenta y podría significar que perdemos los tiempos de espera de Twilio. Pero estos dos pasos adicionales nos ayudan a solucionar algunas de esas limitaciones.