Rivescript
Assim como podemos chamar Webhooks a partir de um diálogo no Watson Assistant, também podemos chama-los a partir de um arquivo de regras do Rivescript. Veremos agora como podemos fazer isso!
Configuração
Consideraremos que você já tem um conhecimento prévio de Rivescript e, assim, evitaremos explicações de como funciona um script escrito em Rivescript.
Para entender como podemos chamar nossos Webhooks a partir de um script, vamos analisar o trecho de código abaixo.
+ ver meu cpf
- Resultado: <call>obterDadosCPF {'cpf': '11111111111'}</call>
Nesta regra, temos que toda vez que o usuário fizer a pergunta "ver meu cpf", será exibida a resposta Resultado: seguida da resposta que o webhook obterDadosCPF retornar. Note que a chamada a um Webhook é realizada através do uso da tag < call >. Dentro desta tag, informamos o nome do webhook seguido de um ÚNICO parâmetro: um JSON. Observe que, ao contrário da notação oficial do JSON, devemos usar aspas simples nos nomes e valores dos atributos. Este JSON será repassado para sua API e pode ser capturado como um HashMap do Java, por exemplo.
Lembra-se que configuramos um webhook, na seção sobre como Configurar Webhooks no Serprobots? Nesta seção, definimos que o nome do Webhook seria obterDadosCPF, correto? Este é o motivo de termos colocado obterDadosCPF dentro da tag < call\ > aqui.
Tratando JSON na Resposta do Webhhok
No caso de sua API retornar um JSON como resposta à chamada do Webhook, o Serprobots converterá cada atributo do JSON para uma variável de usuário (userVar) do Rivescript. Por exemplo, suponha o JSON abaixo:
{
"name": "Serprobots",
"cpf": "123.123.123-22"
}
Você poderá obter os valores desse JSON dentro do seu script usando < get name > ou < get cpf >.
Obtendo o ID da conversação
Outro dado que pode ser obtido através das UserVars do Rivescript é o identificador da conversação. Para tal, use < get conversationId >.
Como tratar códigos de status HTTP
Caso seja necessário, você também pode tratar o código de status do HTTP retornado pela chamada que o webhook fez à sua API. O código do status será retornado para o Rivescript através da variável de usuário sb_webhook_status_code.