telegram换行发送消息
有更好的方法!问题是由于URL编码… 您可以使用
\n
使用普通的PHP文本,但将其通报给
urlencode
方法,如下所示:
$txt = urlencode("here is my text.\n and this is a new line \n another new line");
对我有效!
1)假如您在Windows / Linux操作系统中开发代码,只需使用输入文字:
$text = 'test 123 another text';
多数大众同意!
2)假如您的代码在Windows / Linux服务器上运行,则可以使用
PHP_EOL
常量而不是
\n
:
$text = 'text 123 '.PHP_EOL.'yet another text';
3)假如您搜索独立于操作系统的解决方案,则可以使用
%0A
或
chr(10)
来实现此目标:
$text = 'text 123 '.chr(10).'yet another text';
对于将来的访问者,我在评述中引用@Dagon答案:
使用
%0A
将在电报信息中进行换行
你应该使用urlencode来解决这个问题:
$text ="sth sth sth sth"; $text = urlencode($text);
全部这些答案同时是“准确”和“错误”。实际上,取决于您拥有的许多输入。比方,假如您有一个文本地区供输入,然后将内容发送给Telegram,假如用户在文本地区中誊写并按回车键,则Telegram中的文本将为
hello\neverybody
不是
hello everybody
实行URL编码不会改变任何内容。经过许多积极后,我发现与将文本地区数据从页面发送到另一页面这一事实发生冲突,从而逃走了一些数据。
我解决的方法是用一个未转义的\ n更换转义的\ n。 以是:
$my_msg = str_replace("\\n","\n",$my_msg);
它可以在Mac,PC等装备上使用文本地区中的文本。
阅读并实验了全部这些答案之后,我只想公布自己的解决方案。我在Laravel 5.8中有一个应用程序,可以通过电子邮件和电报消息发送预订。
$telegramMessage = "<strong>Reservation Request</strong>\n". '<strong>Name:</strong> ' . $reservation->reserv_name . "\n". '<strong>E-mail:</strong> <a href="mailto:' . $reservation->email . '"> ' . $reservation->email . "</a>\n". '<strong>Phone:</strong> ' . $reservation->phone . "\n". '<strong>Reservation Date/Time:</strong> ' . $reservation->reserv_date_time->format('d-m-Y H:i') . "\n". '<strong>Number of people:</strong> ' . $reservation->number_of_people . "\n". '<strong>Message:</strong> ' . $reservation->reserv_message . "\n"; Telegram::sendMessage([ 'chat_id' => env('TELEGRAM_CHAT_ID', ''), 'parse_mode' => 'HTML', 'text' => $telegramMessage, ]);
我或多或少地使用了Telegram API容许的全部html标签。您应该留意\ n必须用双引号引起来。
为制止编码和编码问题,我在代码中使用了这个简单的解决方案:
-
首先
,我通过在&#34; sendMessage&#34;中设置
parse_mode = HTML
参数,以HTML格式发送短信。 URL。 -
然后
,我为每个换行插入以下代码:
<pre>\n</pre>
即
固然
text
变量在附加到网址之进步行了卷曲转义:
$text = curl_escape($handle, $text);
它大概不像你想要的那样在波斯语等Unicode语言中表现结果! 您可以预备文本并使用它:
$txt = implode("\n", explode('\n', $txt));
对我来说,此解决方案有用: 使用双引号
$message='Hi' $message=$message."\n"; $message=$message.'Guys'
我用这种方法解决了问题:
$txt = 'aaaaaaaaa\nnew line1 \nnewline2'; $parameters = array('chat_id' => $chatId, "text" => $txt); $parameters["method"] = "sendMessage"; echo json_encode($parameters);
在这里试试: https://telegram-bot-sdk.readme.io/docs/sendmessage
众所周知,telegram的机器人还是很好用,并且是免费的,以是这就给监控系统发送报警消息提供了一个非常好的渠道,相信许多小伙伴已经垂涎三尺了,以是空话不多说,直奔主题吧!
zabbix系统底子设置部分此处就直接跳过了,假如需求请参阅 https://blog.51cto.com/183530300/category8.html
此处我们直接从创建机器人开始,固然创建机器人的条件是你要先有一个telegram账号,接下来是在telegram客户端上的操作了
第一步:在搜索栏里直接使用@BotFather打开和telegram官方机器人的对话框
第二步:发送/start
第三步:给自己的机器人取一个名字(需要切合官方的要求:需要以_bot末端,前面的名字是自定义部分)
第四步:当机器人名字切合官方尺度时,就会收到官方发送过来的token,此token肯定要牢记,由于日后需要常常使用的
第五步:将自己的机器人添加到需要吸收报警消息的telegram个人帐号里,要么telegram群组内里
使用 https://api.telegram.org/bot ” 官方发过来token”/getUpdates,获取相应的chat_id,假如机器发个人的,chat是一串纯数字,假如机器人发给群组,chat_id是数据串前带一个-
使用机器人的API向个人telegram账号发消息(提前是你已经添加此机器人为好友了)的调用格式
curl -X POST "https://api.telegram.org/bot"官方发过来token"/sendMessage" -d "chat_id=$contact&text=$message" &>/dev/null
留意:此种方法只能发送单行消息,假如需要换行,只能使用算定的连接符连接需要换行的多行文本
固然只能改进单行消息这是不完美的,那么怎么办了,有方法,那就是使用python封装一下消息请求就可以了,在这里给大家一个我自己实现的過逞脚本
#!/usr/bin/env python -*- coding: utf-8 -*-* @Author: lucker @Date: 2018-06-01 18:59:26 @Last Modified by: lucker @Last Modified time: 2018-06-01 19:09:47 @Description:Zabbix use telegram bot to send message to group** import telegram import sys contact = sys.argv[1] subject = sys.argv[2] content = sys.argv[3] bot = telegram.Bot(token='官方发过来token') chat_id = contact bot.send_message(chat_id=chat_id, text=subject+'\n'+content)
从代码中可以看出,需要安装python库中的一个telegram调用库,才可以实现python调用telegram接口发送消息
只要有了这个可以或许发送多行内容的python脚本,剩下的也就好办了:
第一步:将此脚本放到zabbix服务器上,并授权zabbix账户有实行权限。
第二步:确保你的zabbix服务器python版本是2.7以上,CentOS默认没有这么高的版本,需要手工升级python版本
如有需要,请参阅此博文https://blog.fazero.me/2016/10/13/centos-update-python/
第三步:手动测试使用此脚本发送多行消息,测试示例:python telegram_send_message.py -123456789 主题:测试信息 $’first line\nsecond line\nthird line’
第四步:zabbix的Administration(管理)->Media types(媒介种类)创建一个新的媒介种类,好比:telegram_send_message
第五步:设置需要吸收telegram报警消息的运维职员账户Administration->Users->Media->add->telegram_send_message,添加并启用telegram_send_message这个Media
第六步:创建一个使用telegram发送消息的active(行动),Configuration->Actions->Create action,选择使用对应媒介方法,如适才创建的telegram_send_message,并定义触发此行动的条件。
关于此部分的具体设置過逞,请参阅博文https://blog.51cto.com/183530300/2089051
至此,zabbix调用telegram机器人发送报警消息成功实现,预祝大家设置舒畅,如嘻歡,请转发加点赞!
NVO
我想通过电报API在一个
<pre>
块或
```
(HTML或贬价剖析模式,我没有偏好)发送消息.
文本是一个带有一些换行符的长字符串.为了便于阅读,我想将其作为代码发送.新行接纳
\n
格式,因此Telegram API可以处置.
但在代码块中我看不到换行符.我已经使用了其他机器人可以在代码块中向我发送一些行,以是我确定它是大概的.
有人可以帮我这个吗?
这是我现在使用的代码:
$url = "https://api.telegram.org/$telegram_apikey/sendMessage?chat_id=$telegram_chatid&parse_mode=Markdown&text=```" . $message ."```"; $telegramResult = file_get_contents($url );
消息是这样的:
-------------------------------------------- \n ------------ IMPORT RESULTS ---------!------- \n -------------------------------------------- \n Product count: 12345 \n Created: 1234 \n Total time: 200 \n -------------------------------------------- \n
本文网址:
http://www.1cm8858.com/d/2020814122631_9977_359254221/home
Ten articles before and after
在2017年拍电报信质报多媒体数字报刊平台-电报telegram技巧分享
telegram下载fordesktop免费(windows)-电报telegram技巧分享
空手来撸币!币圈小白零成本教程详解(电报空投/注册领币离线挖矿)-电报telegram技巧分享
telegram安卓版官方下载-电报telegram技巧分享
【临时用电报停申请1】范文118国网湖南省电力有限公司-电报telegram技巧分享
一次看懂摩斯电码的秘密mBot-电报telegram技巧分享
16个最有趣和最有用的机器人电报telegram-电报telegram技巧分享
搬砖套利骗局爆火币圈盘界警方揭秘全国首例“数字货币案”如何告破-电报telegram技巧分享