Ir para o conteúdo principal

Zenvia:Envio de SMS utilizando a API Zenvia

Envio de SMS via Zenvia no CRM One

NoO CRM One disponibilizamos mediante a contratação de um serviço adicionalpermite o envio de SMS, em caso de dúvidas sobre a contratação, enviar e-mail para comercial@dwu.com.br

Além da contratação da funcionalidade no CRM One, a sua empresa necessita contratar os serviços da Zenvia.

Pré requisito é o Addon estar na versão CRM One 10 release 2021.09.6.001 ou superior.

Contratação Zenvia

Para acessar as informações de contratação poderá faze-loSMS através do link abaixo:

SMS

Criar uma conta na Zenvia e assinar um plano.

Com a sua conta criada, acessar o painel de administração

Zenvia – API SMS

Para integração com a Zenvia,Zenvia, foramdisponível seguidasmediante ascontratação orientaçõesadicional.

contidas
📧 Para contratar o envio de SMS pelo CRM One, entre em contato com: comercial@dwu.com.br

Pré-requisitos

  • Ter uma conta ativa na Zenvia com plano contratado
  • CRM One Add-on versão 2021.09.6.001 ou superior

Como contratar Zenvia

Você pode contratar o serviço de SMS diretamente no manual:site https://zenviasms.docs.apiary.io/#reference/servicos-da-api/envio-de-um-unico-smsoficial da Zenvia:

Foi➡️ escolhidoAcessar Zenvia

Painel Zenvia
Administração Zenvia

Integração com a API Zenvia

A integração utiliza o formatoendpoint REST de uso da API, desta forma a comunicação ocorre no endereço:REST:

https://api-rest.zenvia.com/services/send-sms

ParaConsulte oa correto funcionamento é importante observar as orientações da📘 documentação Zenvia,oficial quepara incluiverificar asportas, informaçõpermissões sobre liberação de portas e endereçosretornos deda internet.API.

Arquitetura de funcionamentoFuncionamento

NoO CRM One utiliza a tabela @DWU_MSG_SMS no banco de dados do SAP BusinessB1. OneEla é criado pelo CRM One uma tabela, chamada [@DWU_MSG_SMS], nesta tabela deverãopode ser inseridosalimentada registrosmanualmente correspondentespor asformulário mensagensou de SMS, cada registro representa apenas uma mensagem.

Os registros podem ser inseridos através depor comandos SQL diretamente no banco de dados, ou através de um formulário padrão no SAP Business One, disponível através do menu “Ferramentas > Janelas definidas pelo usuário > DWU_MSG_SMS – CRM One – Mensagem SMS”automáticos.

Formulário SMS

Através

Campos SMS
do
💡 caminhoEmbora acima, será abertoexista o formulário onde as mensagens de SMS podem ser inseridas manualmente pelo usuário.

Embora, existario, a opção de utilização de um formulário no SAP Business One, a forma mais prática demais utilização da ferramentacomum é aautomatizar criaçãovia defunções comandos de banco de dados, que realizem o processamentoSQL e ausar inserçãonotificações dedo registrosSAP, decomo forma automatizada na tabela [@DWU_MSG_SMS], podendo para tanto o desenvolvimento de uma função e sua chamada através de gatilhos, via [SBO_SP_TransactionNotification] ou [SBO_SP_PostTransactionNotice]SBO_SP_TransactionNotification.

Tabela [@DWU_MSG_SMS]@DWU_MSG_SMS - Campos Padrão

AConsulte a tabela [@DWU_MSG_SMS]completa possuino amanual relaçãoacima. deAlguns campos a seguir, onde cada campo possui uma característica para funcionamento do sistema.

Nesta tabela poderão ser adicionados campos extras pela empresa usuária do SAP Business One, que podem ser usados para controles internos, porém os campos adicionais serão ignorados pelo serviço de envio de SMS.

Na coluna Aplicação, as opções são:importantes:

  • “Leitura”U_Destinatario: énúmero umno campoformato queinternacional durante(ex: o processamento do serviço ele será apenas lido pelo serviço seus dados processados e enviados.5511987654321)
  • “LeituraU_TextoSMS: e escrita” é um campo que durante o processamento do serviço poderá ter seus dados lidos, dependendo de na configuração de envio ele ser um campo utilizado e após o envio, dependendo da configuração de retorno poderá ter alguma informação gravada no campomensagem com algumaté 160 caracteres (sem acento) ou 70 (com acento)
  • U_Status: 'N' (não enviado) ou 'Y' (enviado)
  • U_StatusCode, U_DetailCode: retorno da API.Zenvia
NomeDescriçãoAplicaçãoUtilização
CodeCodeLeituraInserir um número inteiro sequencial crescente.
NameNameLeituraInserir um número inteiro sequencial crescente.
U_IdConfigIdConfigLeituraDeverá ser informado o código do cadastro com os dados

Exemplo de integraçfunção do formulário “Configuração de envio de SMS” no CRM One, tipicamente o primeiro cadastro de configuração é o 1, mas poderá ser outro número caso mais de uma conta de envio de SMS esteja configurada.

U_ObjTypeObjTypeLeituraUso livre, como sugestão registrar o ObjType de um documento ou registro do SAP Business One, se por exemplo o SMS corresponde a alguma informação de um documento do tipo “Nota fiscal de saída” tabela OINV o ObjType deste documento no SAP é 13, então neste cenário preencher este campo com o valor 13.
U_ObjEntryObjEntryLeituraUso livre, como sugestão registrar o DocEntry de um documento ou registro do SAP Business One, se por exemplo o SMS corresponde a alguma informação de um documento do tipo “Nota fiscal de saída” tabela OINV o DocEntry.
U_AssuntoAssuntoLeituraUso livre, como sugestão registrar a descrição para uso interno sobre a mensagem enviada.
U_DestinatarioDestinatarioLeituraColocar o telefone do destinatário do SMS, lembrando que para a Zenvia este campo deve ser no formato:
[Código de pais][DDD com 2 dígitos][Numero do celular com 9 dígitos]
Caso o destinatário é do Brasil, com telefone DDD 011 de São Paulo e número de telefone 9.8765.4321, considerando o exemplo registrar: 5511987654321
U_TextoSMSTexto SMSLeituraMensagem do SMS que deverá ser enviado, lembrando que mensagens não acentuadas podem ser 160 caracteres, ou até 70 caracteres para mensagens acentuadas.
U_StatusStatusLeituraPreencher com ‘N’ as opções para este campo é N ou Y, onde N significa que a mensagem ainda não foi enviada e Y significa que a mensagem foi enviada para a API da Zenvia, se houve sucesso deve ser verificado nos campos “Status Code” e “Detail Code” observando os retornos de acordo com a tabela da Zenvia.
U_StatusCodeStatus CodeLeitura e escritaUso livre, sugestão deixar em branco, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_DetailCodeDetail CodeLeitura e escritaUso livre, sugestão deixar em branco, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_MensagemRetornoMensagem RetornoLeitura e escritaUso livre, sugestão deixar em branco, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_DataMsgDataMsgLeitura e escritaUso livre, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_HoraMsgHoraMsgLeitura e escritaUso livre, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_DataEnvDataEnvLeituraDeixar em branco, este campo independente de configuração receberá a data em que o serviço obteve êxito em comunicar com a API.
U_HoraEnvHoraEnvLeituraDeixar em branco, este campo independente de configuração receberá a hora em que o serviço obteve êxito em comunicar com a API.
U_UsuarioUsuarioLeituraUso livre.
U_Obs1Obs1Leitura e escritaUso livre, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_Obs2Obs2Leitura e escritaUso livre, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_Obs3Obs3Leitura e escritaUso livre, poderá ser atualizado de acordo com a configuração no retorno do envio.
U_DataProgDataProgLeituraUso livre
U_HoraProgHoraProgLeituraUso livre
U_ResponderParaResposta ParaLeituraUso livre
U_TentativasEnvioTentativas EnvioLeituraUso livre, deixar em branco ou informar um número inteiro maior que zero, para representar quantas tentativas de envio devem ser processadas.
U_FalhasFalhasLeituraDeixar em branco, campo utilizado para registrar o número de tentativas de envio em caso de fahas de comunicação
U_RemetenteRemetenteLeituraUso livre
U_BoolBoolLeituraUso livre, mas poderá ser usado com as strings ‘true’ ou ‘false’ de acordo com a necessidade

Função para inserir registros na tabela de SMS em SQL para SAP HANA

CREATE PROCEDURE CRMONE_ENVIOSMS
(
  Filtro INT
-- Ao realizar a chamada para função, passar como parâmetro o número inteiro da última mensagem enviada e armazenada no campo "@DWU_MSG_SMS"."Code"
)
LANGUAGE SQLSCRIPT
AS
BEGIN
  DECLARE CONTADOR INTEGER = :Filtro;

  -- Declara uma variável para servir como contador

	---------------------------------------------------------------------------------------------
	-- Declaração de um cursor que receberá e armazena o resultado de uma consulta
	DECLARE CURSOR _cursor FOR
    SELECT '1' as "IdConfig",
		'13' as "ObjType",
		'123' as "ObjEntry",
		'SMSNF' as "Assunto",
		'5511987654321' as "Destinatario",
		'Emitida a NF número 123' as "TextoSMS",
		'N' as "Status",
		CONCAT(CONCAT(CONCAT(CONCAT(CAST(EXTRACT(YEAR FROM NOW()) AS VARCHAR(4)),'-'),CONCAT(CAST(EXTRACT(month FROM NOW()) AS VARCHAR(4)),'-')),RIGHT(CONCAT('0',CAST(EXTRACT(DAY FROM NOW()) AS VARCHAR(4))),2)),'T09:00:00') AS "Obs1",
		CAST(NOW() as date) as "DataProg",
		'CRM One' as "Remetente",
		'false' as "Bool"... FROM "DUMMY"					

	-- Abre cursor;

  FOR _cursorRow AS _cursor
  DO
		----------------------------------------------------------------------------------------------------------------------------------
		-- Insere linhas da tabela
		----------------------------------------------------------------------------------------------------------------------------------
    CONTADOR = CONTADOR + 1;
    INSERT INTO "@DWU_MSG_SMS" (
			"Code",
			"Name",
			"U_IdConfig",
			"U_ObjType",
			"U_ObjEntry",
			"U_Assunto",
			"U_Destinatario",
			"U_TextoSMS",
			"U_Status",
			"U_Obs1",
			"U_Obs2",
			"U_DataProg",
			"U_Remetente",
			"U_Bool"
			 ...) VALUES (
			CONTADOR
			,CONTADOR
			,_cursorRow."IdConfig"
			,_cursorRow."ObjType"
			,_cursorRow."ObjEntry"
			,_cursorRow."Assunto"
			,_cursorRow."Destinatario"
			,_cursorRow."TextoSMS"
			,_cursorRow."Status"
			,_cursorRow."Obs1"
			,'NONE'
			,_cursorRow."DataProg"
			,_cursorRow."Remetente"
			,_cursorRow."Bool"
			...);
  END FOR;

  CLOSE _cursor;
END

---------------------------------------------------------------------------------------------------------------------------

 

Configuração

Acessar no SAP Business

No One,SAP, menu até:

Módulos > CRM One > Configurações > Serviços > Configuração de envio de SMS”SMS

Configuração envio SMS

NoCampos formulário “Configuração de envio de SMS”, deverão ser realizadas as configurações:principais:

  • Usuário: informar o nome de usuário disponibilizado/ Senha: fornecidos pela Zenvia para consumo da API
  • Senha: respectiva senha do usuário disponibilizado pela Zenvia para consumo da API
  • Endereço: informar o endereço da API para envio de SMS, como por exemplo https://api-rest.zenvia.com/services/send-sms
  • Tempo Sinc: deverá selecionar a frequência que o serviçointervalo de enviosverificação deverá verificar e enviar novos SMS’s, recomendamos(ex: 5 minutos ou mais, para casos onde há apenas uma rotina de envios diários sugestão de usar 60 minutos.min)
  • Limite diáriorio: detotal envios: informar um valor inteiro maior que 1, esta informação é obrigatória, pode ser usada para controle de volume de envios evitando surpresas nos custos com envios, caso sejam inseridas para envio mais mensagens que o definido por dia, ao atingir o limitemáximo de mensagens os envios do dia serão interrompidos.
  • Envio: NesteJSON campo deveráa ser configurado o formato para geração de Json de envio dos SMS’s, a seguir será explicado com detalhes a configuração deste campo.enviado
  • Retorno: Neste campo deverá ser configurado o formatoJSON de retorno deda Json com a resposta de envio e resultará na atualização do registro do SMS com o status de processamento, a seguir será explicado com detalhes a configuração deste campo.Zenvia
Tela de envio SMS

Apêndice de tabelas com informaçõesTabelas de retorno

As tabelas abaixo representam os retornos da API Zenvia, conforme encontrados no manual disponível em https://zenviasms.docs.apiary.io/# consulta realizada em 25/11/2021.

Zenvia

🔸 statusCode

  • 00:
  • Ok
  • 02:
  • Sent
  • 03:
  • Delivered
  • 06:
  • 10:
  • Error
  • 11:
  • detailCode
    Sent
  • 012:
  • Code Description
    00Ok
    01Scheduled
    02Sent
    03Delivered
    04Not Received
    05Blocked – No Coverage
    06Blocked – Black listed
    07BlockedVerified Invalid

    🔸 Number

    08Blocked – Content not allowed
    08Blocked –
  • 000: Message Expired
  • 09Blocked
    10Error
    11Verified

detailCode

  • 013:
  • Númeroincompleto
  • 900:
  • Dica:emonitoreoscódigos
    CodeDescription
    000Message Sent
    002Message successfully canceled
    010Empty message content
    011Message body invalid
    012Message content overflow
    013 Incorrect
  • 130: or incomplete ‘to’ mobile number
  • 014Empty ‘to’ mobile number
    015Scheduling date invalid or incorrect
    016ID overflow
    017Parameter ‘url’ is invalid or incorrect
    018Field ‘from’ invalid
    021‘id’ fieldismandatory
    080Message with same ID already sent
    100Message Queued
    110Message sent to operator
    111Message confirmation unavailable
    120Message received by mobile
    121Message Verified by Google
    130Message blocked
    131Message blocked by predictive cleansing
    132Message already canceled
    133Message content in analysis
    134Message blocked by forbidden content
    135Aggregate is Invalid or Inactive
    136Message expired
    140Mobile number not covered
    141International sending not allowed
    145Inactive mobile number
    150Message expired in operator
    160Operator network error
    161Message rejected by operator
    162Message cancelled or blocked by operator
    170Bad message
    171Bad number
    172Missing parameter
    180Message ID notfound
    190Unknown error
    200Messages Sent
    210Messages scheduled but Account Limit Reached
    240File empty or not sent
    241File too large
    242File readerror
    300Received messages found
    301No received messages found
    400Entity saved
    900Authentication error
    901 AccountFaça typetestes notcom supportpoucos thisenvios operation.
    990 Accountde Limitstatus Reachedpara validar Pleasea contact support
    998Wrong operation requested
    999Unknown Error
    integração.