Este artigo ensina como configurar e efetuar o envio de mensagens do aplicativo Telegram via uma aplicação Elipse E3/Elipse Power.
Pré-Requisitos:
Para enviar mensagens no Telegram utilizando uma aplicação do Elipse E3 ou Elipse Power, será necessário:
- Instalar e criar uma conta no Telegram.
- Criar um bot no Telegram, que servirá como conta para enviar as mensagens pelo E3/Power.
- Identificar o API/Token e o ChatID para envio das mensagens.
- Utilizar o driver Elipse VBScript e um código JSON para o envio das mensagens.
Introdução:
1. Uma vez que o Telegram já tenha sido instalado e configurado em seu smartphone, comece uma conversa com @BotFather:
2. Clique em Start acima do seu teclado, e assim que as opções forem abertas, clique ou escreva “/newbot”:
3. Logo após, crie um nome para o seu bot:
NOTA: Este username deve conter a palavra “bot”; por exemplo: ElipseSoftwareBOT ou ElipseSoftware_BOT
4. A mensagem então enviada contém duas informações importantes: o link para abrir o chat com o bot, e a API/token que identifica quem envia a mensagem. Copie este token para utilizá-lo no próximo passo.
Iniciando a conversa:
1. Acesse o link anterior para criar uma conversa com o bot criado; logo depois, clique em Start e envie uma mensagem qualquer (isto é necessário para vermos o ID do chat):
2. Acesse um browser e então utilize o link abaixo, alterando o token riscado pelo token que você copiou na seção anterior; com isso você irá acessar uma página onde poderá coletar várias informações, entre elas o número do ChatID aberto e a mensagem recebida:
https://api.telegram.org/bot743025931:AAF_JgmU-WCM13Mk5avBGn0cNVTNBcB0y_8/GETupdates
3. Copie o ChatID para utilizá-lo futuramente no envio de mensagens pelo Elipse E3/Power.
Utilizando o Telegram com o Elipse E3/Elipse Power:
1. No Elipse E3/Power, iremos utilizar o driver VBScript com a estrutura JSON, acrescentando as linhas abaixo:
Dim vChatID, vText, vToken
Sub OnWrite_ChatID(r, v) vChatID= v.Value End Sub
Sub OnWrite_Text(r, v) vText = v.Value End Sub
Sub OnWrite_Token(r, v) vToken = v.Value End Sub
Sub OnWrite_SendMsg(r, v) URL = "https://api.telegram.org/bot"&vToken&"/SendMessage?chat_id=" & vChatID & "&text=" & vText Dim oJsonParser Set oJsonParser = new aspJSON 'Creates aspJSON object oJsonParser.LoadJSON(URL) End Sub
Código JSON: Class_asp_JSON.txt
2. Para mais detalhes sobre o código JSON, acesse o artigo Consumindo e enviando dados de um Webservice que utiliza o formato JSON.
3. Então, crie quatro tags no Driver e configure-os através da coluna Item (propriedade ParamItem) e Leituras desabilitadas (propriedade AllowRead):
4. Finalmente, escreva nos tags as informações de Token, ChatID e o Text a serem enviadas; logo após, escreva qualquer valor no tag SendMsg.
Anexos:
Boa tarde, estou lidando com a seguinte situação:
Segui a risca todas as instruções acima, porém não funcionou. Habilitei o log do driver e identifiquei que estava ocorrendo um erro envolvendo o certificado de segurança. Para que fosse ignorado qualquer erro relacionado a certificado de segurança acrecentei a seguinte linha de código conforme abaixo :
Set aj_XmlHttp = CreateObject(“MSXML2.ServerXMLHTTP”)
aj_XmlHttp.SetOption(2) = 13056 —Acrescentado por mim——
Funcionou.
Meses depois, a aplicação parou de funcionar. O erro mostrado no log é:
26/10/2020 15:41:46.905 (4C60) DRIVER ERROR: msxml3.dll (line 56, col 5): A security error occurred
26/10/2020 15:41:46.906 (4C60) DRIVER Run ‘OnWrite_SendMsg’: failed (80020101)
26/10/2020 15:41:46.906 (4C60) TAG ==> (0.511) Tag(‘SendMsg’).WriteValue (15:41:46.394) 1 = ERROR (hr=80020101)
A linha 56 col 5 do código consiste em:
aj_XmlHttp.Send
Poderia me ajudar a resolver este erro?
Grato.
Olá Williams,
Poderia enviar o log contendo o erro para gabriel@elipse.com.br.
A causa do erro é devida a um erro de segurança ao acessar a msxml3.dll. Esta DLL pertence ao Windows, e é utilizando no Script ao criar o objeto “aj_XmlHttp”:
Set aj_XmlHttp = CreateObject(“MSXML2.ServerXMLHTTP”)
aj_XmlHttp.SetOption(2) = 13056
aj_XmlHttp.open “GET”, inputsource, false
aj_XmlHttp.setRequestHeader “Content-Type”, “application/json”
aj_XmlHttp.setRequestHeader “CharSet”, “UTF-8”
aj_XmlHttp.Send
Abaixo segue um artigo com possíveis correções:
• Exefiles | Corrigir erros de DLL do Msxml3.dll e baixar agora
Segue também artigo oficial da MS, sobre esta biblioteca:
• MS | Lista de versões do analisador Microsoft XML (MSXML)
Boa tarde, Gabriel. Poderia me ajudar, por favor.
Baixei o exemplo disponibilizado e não obtive sucesso em mandar mensagem. Aparece o seguinte nos logs.
16/02/2024 13:47:15.497 (1CC8) DRIVER – 17 parameters with value = 0 were omitted
16/02/2024 13:47:15.497 (1CC8) DRIVER drvSetStatus(‘LOG’) = ON
16/02/2024 13:47:15.499 (1CC8) DRIVER drvGetStatus(‘LOGFILE’) = ‘C:\eeLogs\VBScriptDriver_%DATE%.log’
16/02/2024 13:47:15.499 (1CC8) DRIVER drvGetStatus(‘LOG’) = 1 (ON)
16/02/2024 13:47:39.737 (42B4) DRIVER ERROR: msxml3.dll (line 55, col 5): O tempo limite da operação foi atingido
16/02/2024 13:47:39.738 (42B4) DRIVER Run ‘OnWrite_SendMsg’: failed (80020101)
16/02/2024 13:47:39.738 (42B4) TAG ==> (21.234) Tag(‘SendMsg’).WriteValue (13:47:18.503) 1 = ERROR (hr=80020101)
16/02/2024 13:48:38.489 (42B4) DRIVER ERROR: msxml3.dll (line 55, col 5): O tempo limite da operação foi atingido
Sabe qual a solução para esse problema?
Bom dia, na API que estou consultando não é passado o token pelo link. No caso, ele é do tipo Bearer Token. Como procedo?
Insira esta autenticação no cabeçalho do pedido na classe JSON, por exemplo:
objXmlHttpMain.setRequestHeader “Authorization”, “Bearer < api secret id >“
Eu sei que minha pergunta deve ser muito besta, mais estou em um grupo do Telegram ontem eu tenho que pegar “SENHA” tem como eu fazer
Com o que eu pegue sempre a semha 1 no horário estipulado pelo grupo?