AnnA Web Service
O AnnA Web Service é um recurso que possibilita a interação com a AnnA. Com ele, você pode compor os nós de um Fluxo de Trabalho da AnnA para que o bot possa ler e executar conforme desejar.
Como funciona
Ao criar um Web Service, você precisa registrá-lo na AnnA, para que ela gere as chaves necessárias para criptografia/descriptografia. Em seguida, adicione um nó de Web Service ao seu Fluxo de Trabalho da AnnA e selecione o Web Service que será executado.
Nosso sistema chamará o Web Service que você registrou e em seguida executará os contêiners na ordem que você os adicionou à estrutura.
Utilizando a classe AnnAWebService
Para o nó de Web Service da AnnA, você precisará da classe AnnaWebService para instanciar e adicionar contêiners a serem executados.
Exemplos:
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv);
ou
var annaWs = new AnnaWebService( new AnnaWebServiceConfig() { EncryptionKey = YourEncryptionKey, DecryptionKey = YourDecryptionKey, InitializationVector = ivFromANNAEXEC } );
Adicionando um contêiner de mensagem:
annaWs.AddMessageContainer("Hello AnnA!");
Você pode fazer Encadeamento de Métodos ao adicionar contêiners (Como em um builder):
annaWs.AddMessageContainer("Hello AnnA!").AddTimeContainer(5);
Código de exemplo
// Encryption and Decryption keys are available when you register a new Web Service in AnnA string encryptionKey = "YOUR_ENCRYPTION_KEY"; string decryptionKey = "YOUR_DECRYPTION_KEY"; string iv = form.Get("ANNAEXEC"); // form is a FormDataCollection, the IV will be sent to your API Route in the ANNAEXEC post variable
// Create a new AnnaWS object then add some containers to it var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWs .AddMessageContainer("Hello AnnA!") .AddQuestionContainer("What is 1 + 1?", new QuestionContainerOptions { RightAnswer = "S", PossibleAnswers = new string[] { "2", "two" } });
// Now get the encrypted containers string encryptedContainers = annaWs.GetEncryptedContainers();
// Send the response back to AnnA // Note: In .NET 5+ applications it is not required to create the HttpResponseMessage object, // simply returning "encryptedContainers" will produce the same results var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StringContent(encryptedContainers, Encoding.UTF8, "text/plain");
return response;
Adicionando contêiner de mensagem
Envia uma mensagem para o usuário
Parâmetros:
- Message: Obrigatório. O texto que será enviado ao usuário, por exemplo, Olá Mundo!
- Opções
- Alias: Opcional. Use para identificar o contêiner após a execução do nó do Web Service, por exemplo, Hello123.
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- BeforeExecutionRule: Opcional. Deve ser uma expressão. Você pode usar Funções da AnnA que retornem “true” ou “false” para decidir se este contêiner deve ser executado.
Exemplo de utilização
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWs.AddMessageContainer("Hello AnnA!");
Adicionando contêiner ExecFunction
Executa uma ou mais Funções da AnnA.
Parâmetros:
- Expression: Obrigatório. Escreva expressões com Funções da AnnA aqui, por exemplo, AddParm(Teste1,123) AddParm(Teste,456)
- Opções
- Alias: Opcional. Use para identificar o contêiner após a execução do nó do Web Service, por exemplo, Function123.
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- BeforeExecutionRule: Opcional. Deve ser uma expressão. Você pode usar Funções da AnnA que retornem “true” ou “false” para decidir se este contêiner deve ser executado.
Exemplo de utilização
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWS.AddExecFunctionContainer("AddParm(Test1,123) AddParm(Test2,456)");
Adicionando contêiner de Tempo
Espere alguns segundos antes de prosseguir com o fluxo de execução dos contêineres.
Parâmetros:
- TimeToWait: Obrigatório. Define o tempo em segundos para pausar a execução.
- Opções
- Alias: Opcional. Use para identificar o contêiner após a execução do nó do Web Service, por exemplo, Time123.
- ShowMessage: Opcional. Se a mensagem deve ser exibida ou não. O padrão é ‘S’ (Mostrar a mensagem).
- Message: Opcional. O texto que será enviado ao usuário, por exemplo, Olá Mundo!
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- BeforeExecutionRule: Opcional. Deve ser uma expressão. Você pode usar Funções da AnnA que retornem “true” ou “false” para decidir se este contêiner deve ser executado.
Exemplo de utilização
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWs.AddTimeContainer(5); // Wait 5 seconds
Adicionando contêiner Multimídia
Envia mídia para o usuário, como imagens, vídeos, áudios e documentos.
Parâmetros:
- MediaURL: Obrigatório. O URL de download para um arquivo, por exemplo, https://your.domain/route/to/file.extension
- Opções
- Alias: Opcional. Use para identificar o contêiner após a execução do nó do Web Service, por exemplo, Media123.
- Message: Opcional. O texto que será enviado ao usuário, por exemplo, Olá Mundo!
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- BeforeExecutionRule: Opcional. Deve ser uma expressão. Você pode usar Funções da AnnA que retornem “true” ou “false” para decidir se este contêiner deve ser executado.
Exemplo de utilização
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWS.AddMultimediaContainer("https://learning.anna.center/Resources/AnnaIcon.png", new MultimediaContainerOptions { Message = "Message of the image" });
Adicionando contêiner de Questão
Envia uma pergunta para o usuário
Parâmetros:
- Question: Obrigatório. A pergunta que será enviada ao usuário
- Opções
- Alias: Opcional. Use para identificar o contêiner após a execução do nó do Web Service, por exemplo, Function123.
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- BeforeExecutionRule: Opcional. Deve ser uma expressão. Você pode usar Funções da AnnA que retornem “true” ou “false” para decidir se este contêiner deve ser executado..
- Competence: Opcional. Uma competência já registrada na empresa. Uma nova competência será criada se não existir na empresa.
- Subject: Opcional. Um assunto já registrado na empresa. Um novo assunto será criado se não existir na empresa.
- Topic: Opcional. Um tópico dentro do assunto. Será criado se não existir.
- IgnoreExecFluxo: Opcional. Ignora outras ações do usuário além de responder à pergunta atual ou encerrar todos os serviços.
- SensitiveData: Opcional. Informe ‘S’ para criptografar a resposta usando a chave de criptografia da empresa. Observe que ao recuperar a resposta usando as Funções da AnnA, ela também estará criptografada. O padrão é ‘N’.
- RightAnswer: Opcional. Ative este recurso se desejar verificar se a resposta está no array de respostas possíveis.
- RightAnswerValue: Opcional. Os pontos que serão ganhos pelo usuário se ele responder corretamente.
- AnswerType: Opcional. ‘N’ se não deseja enviar feedback sobre a resposta. ‘Q’ se deseja enviar feedback. Padrão é ‘N’.
- CorrectAnswerComment: Opcional. Quando answerType for ‘Q’, use esta configuração para enviar um feedback positivo ao usuário.
- IncorrectAnswerComment: Opcional. Quando o answerType for ‘Q’, use esta configuração para enviar um feedback negativo ao usuário.
- DynamicValidations: Opcional. Escreva expressões usando Funções da AnnA que retornem TRUE ou FALSE. A execução continuará quando a expressão retornar TRUE.
- ValidationError: Opcional. Defina uma mensagem para erros de validação quando dynamicValidations retornar FALSE.
- ValidationMask: Opcional. Defina uma máscara para a resposta do usuário.
- ExternalData: Opcional. Pode armazenar qualquer informação que você deseje recuperar com Funções da AnnA, por exemplo, “LastAnswerJSON()” ou “AnswersJSON()“.
- PossibleAnswers: Opcional. Se “rightAnswer” estiver definido como “S”, então esta propriedade deve ser fornecida. Uma coleção de strings contendo as possíveis respostas corretas para a pergunta.
Exemplo de utilização
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWS.AddQuestionContainer("What is 1 + 1?", new QuestionContainerOptions { RightAnswer = "S", PossibleAnswers = new string[] { "2", "two" } });
Adicionando contêiner de Alternativa
Envia uma pergunta de múltipla escolha para o usuário.
Parâmetros:
- Question: Obrigatório. A pergunta que será enviada ao usuário
- Alternatives: Obrigatório. Array que contém as alternativas.
- Alternative: Obrigatório. Texto da alternativa.
- Alias: Opcional. Alias da alternativa, pode ser usado para identificar a resposta do usuário em nós subsequentes.
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- ExhibitionRule: Opcional. Use Funções da AnnA para escrever uma expressão que retorne TRUE ou FALSE. Se a expressão retornar TRUE, o contêiner será executado.
- IsCorrectAnswer: Opcional. Disponível apenas quando a opção “rightAnswer” é definida como ‘S’. Use ‘S’ para marcar a alternativa como resposta correta.
- AlternativeValue: Opcional. Um valor para as alternativas que será usado em estatísticas.
- Order: Opcional. Ordem da alternativa.
- Comment: Opcional. Mensagem que será enviada ao usuário depois que ele selecionar a alternativa.
- Opções
- Alias: Opcional. Use para identificar o contêiner após a execução do nó do Web Service, por exemplo, Function123.
- RestrictToGroup: Opcional. Preencha com os apelidos dos grupos de usuários registrados na empresa.
- BeforeExecutionRule: Opcional. Deve ser uma expressão. Você pode usar Funções da AnnA que retornem “true” ou “false” para decidir se este contêiner deve ser executado.
- Competence: Opcional. Uma competência já registrada na empresa. Uma nova competência será criada se não existir na empresa.
- Subject: Opcional. Um assunto já registrado na empresa. Um novo assunto será criado se não existir na empresa.
- Topic: Opcional. Um tópico dentro do assunto. Será criado se não existir.
- Enumeration: Opcional. Defina a enumeração das alternativas. N = Números, L = Letras, R = Romanos, I = Lista (Popup no WhatsApp), B = Botões (Botões no WhatsApp)
- Randomize: Opcional. Informe ‘S’ para embaralhar as alternativas. Padrão é ‘N’.
- RightAnswer: Opcional. Ative este recurso se desejar verificar se a resposta está no array de respostas possíveis.
- AnswerType: Opcional. ‘N’ se não deseja enviar feedback sobre a resposta. ‘Q’ se deseja enviar feedback. Padrão é ‘N’.
- AnswerTypeComment: Opcional. A mensagem que será enviada quando o usuário responder à pergunta.
- ExternalData: Opcional. Pode armazenar qualquer informação que você deseje recuperar com Funções da AnnA, por exemplo, “LastAnswerJSON()” ou “AnswersJSON()“.
Exemplo de utilização
List<AnnaAlternative> alternatives = new List<AnnaAlternative>() { new AnnaAlternative { Alias = "Alternative001", Alternative = "2 two", Order = "1", IsCorrectAnswer = "S" }, new AnnaAlternative { Alias = "Alternative002", Alternative = "5 five", Order = "2", IsCorrectAnswer = "N" } };
var annaWs = new AnnaWebService(encryptionKey, decryptionKey, iv); annaWS.AddAlternativeContainer("What is 1 + 1?", alternatives);