Integração Z-API com Latromi em C#

Boa tarde

Preciso de uma ajuda para configurar a API do Z-API com o Latromi via C#. Seguindo a documentação da ferramenta não funcionou.

Exemplos:

– Código em C# para conectar a API e encaminhar mensagens:

var client = new RestClient("https://api.z-api.io/instances/SUA_INSTANCIA/token/SEU_TOKEN/send-text");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("client-token", "{{security-token}}");
request.AddParameter("undefined", "{\"phone\": \"5511999998888\", \"message\": \"Welcome to *Z-API*\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

– Enviar link na mensagem.

{
  "phone": "5511999998888",
  "message": "Aqui você coloca um texto sobre o site, atenção esse texto preciso ter o link que será enviado no final da mensagem! ",
  "image": "link com a imagem",
  "linkUrl": "http s://z-api.io",
  "title": "Z-API",
  "linkDescription": "Integração com o whatsapp"
}
2 curtidas

Olá Thiago,
por que não funcionou? Qual foi o erro?
De que modo esse comando foi chamado no Latromi?

Olá @Thiago!

Segue um exemplo de requisição usando C#:

using System;
using System.IO;
using System.Reflection;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using System.Text;
using LATROMI.Extensions;

// Nome da sua instância
var instance = "SUA_INSTANCIA";

// Captura os valores dos campos da tela.
//      Campos: security_token(TextBox), phone_number(TextBox), message(TextBox)
var token = (string)Fields["security_token"].Value;
var phone = (string)Fields["phone_number"].Value;
var message = (string)Fields["message"].Value;

// Monta a URL
var url = "https://api.z-api.io/instances/" + instance + "/token/" + token + "/send-text";

// Declara HttpClient para fazer o envio para a WebAPI
using (HttpClient client = new HttpClient()) 
{
    // Adiciona cabeçaho HTTP com o token
    client.DefaultRequestHeaders.Add("client-token", token);
    
    // Estrutura de dados que será enviada
    var requestData = new {
        phone = phone,
        message = message
    };
        
    // Conteudo do corpo da requisição
    var requestContent = new StringContent(JsonConvert.SerializeObject(requestData), Encoding.UTF8, "application/json");
    
    // Faz a solicitação POST para o endpoint 
    var response = client.PostAsync(url, requestContent).Result;

    // Varifica se a solicitação foi bem-sucedida
    int statusCode = (int)response.StatusCode;    

    // Faz a leitura do resultado da requisição
    var resultJson = response.Content.ReadAsStringAsync().Result;

    // 200 = OK    
    if (200.Equals(statusCode))
    {
        // Deserialize o JSON com a biblioteca NewtonSoft usandoo tipo "dynamic"
        var result = JsonConvert.DeserializeObject<dynamic>(resultJson);

        // Manda resultado para os campos da tela
        //      Campos: zaapId(TextBox), messageId(TextBox)
        Fields["zaapId"].Value = (string)result.zaapId;
        Fields["messageId"].Value = (string)result.messageId;
    }

    // Manda o código de retorno e o JSON de resposta para os campos da tela
    //      Campos: status_code(NumericTextBox), messageId(TextBox)
    Fields["status_code"].Value = statusCode;
    Fields["result"].Value = resultJson;
}

2 curtidas