ntfy Delphi 相关消息接口文档

关联文档:

  1. ntfy 实现消息订阅和通知(无需注册、无需服务器,太好了)_海纳老吴的博客-CSDN博客
  2. 群晖 nas 自建 ntfy 通知服务(梦寐以求)_海纳老吴的博客-CSDN博客

目录

一、消息实体对象接口

1. 消息发布方消息接口

2. 消息订阅方接口


一、消息实体对象接口

1. 消息发布方消息接口

usesNotify.Notification.Contract;//实际定义的接口
INotifyNotification = interface['{BE2E83B7-C39E-4985-93F9-4468976B6AC5}']function Topic: String; overload;function Topic(const AValue: String): INotifyNotification; overload;function MessageContent: String; overload;function MessageContent(const AValue: String): INotifyNotification; overload;function Title: String; overload;function Title(const AValue: String): INotifyNotification; overload;function Tags: INotifyTags; overload;function Tags(const AValue: INotifyTags): INotifyNotification; overload;function Priority: TNotifyPriority; overload;function Priority(const AValue: TNotifyPriority): INotifyNotification; overload;function AttachURL(const AValue: String): INotifyNotification; overload;function FilePath: String; overload;function AttachFile(const AValue: String): INotifyNotification; overload;function FileName: String; overload;function Click: String overload;function Click(const AValue: String): INotifyNotification; overload;function Action: INotifyAction; overload;function Action(const AValue: INotifyAction): INotifyNotification; overload;function ClearActions: INotifyNotification; overload;function AsJSONString: String;function Email: String; overload;function Email(const AValue: String): INotifyNotification; overload;function Icon: String; overload;function Icon(const AValue: String): INotifyNotification; overload;function Delay: String; overload;function Delay(const AValue: String): INotifyNotification; overload;end;

接口说明:

序号参数(函数)说明
1Topicstring:字面意思是主题,实际就是消息发布方和订阅放约定的"暗号"。只有这个"暗号"对上了,订阅放才能收到发布方的消息。
2MessageContentstring:发布的消息内容字符串,最大长度4096字节
3Titlestring:标题,消息体的标题,一般设置为简短的URL
4TagsINotifyTags:

可以用表情符号和其他相关字符串标记信息:

表情符号: 如果标签与表情符号简码相匹配,就会被转换为表情符号并添加到标题或信息中。
其他标签: 如果标签不匹配,则会在通知下方列出。
此功能对于警告(⚠️、️🚨 或 🚩)等内容非常有用,但也可以简单地标记其他信息(如脚本名称、主机名等)。请使用表情符号简码列表了解哪些标记可以转换为表情符号。

参见:Sending messages - ntfy

5PriorityTNotifyPriority:所有信息都有一个优先级,它定义了手机通知你的紧急程度。总共分5级,默认是3,数值大表示优先级高。
6AttachURLINotifyNotification:

您可以使用外部 URL 来指定附件的托管位置,而不是向手机发送本地文件。这可以是 Dropbox 链接、社交媒体上的文件或任何其他公开可用的 URL。由于文件是外部托管的,因此上述的过期时间或大小限制在此不适用。

要附加外部文件,只需输入AValue参数即可,例如 https://example.com/flower.jpg 会生成文件名 flower.jpg)。要覆盖此文件名,可以发送 X-Filename 标头或查询参数(或其任何别名 Filename、File 或 f)。

7AttachFile

要将电脑中的文件作为附件发送,可以将其作为 PUT 请求主体发送。如果信息大于最大信息大小(4,096 字节)或包含非 UTF-8 字符,ntfy 服务器会自动检测 MIME 类型和大小,并将信息作为附件文件发送。要以附件形式发送较小的纯文本信息或文件,必须通过 X-Filename 标头或查询参数(或其别名 Filename、File 或 f)传递文件名。

默认情况下,按照 ntfy.sh 的配置方式,附件的最大大小为 15 MB(每个访问者的附件总大小为 100 MB)。附件会在 3 小时后过期,这通常会给用户足够的时间下载,或让安卓应用自动下载。还请查看以下其他限制。

8Clickstring:您可以定义点击通知时打开的 URL。如果您的通知与 Zabbix 警报或您希望提供深度链接的事务有关,这可能会很有用。点击通知将打开网页浏览器(或应用程序)并打开网站。

要定义通知的点击操作,请将 URL 作为 X-Click 标头(或其别名 Click)的值。如果传递的是网站 URL(http:// 或 https://),网络浏览器就会打开。如果传递的是可由其他应用程序处理的其他 URI,则负责的应用程序可能会打开。

例如

http:// 或 https:// 将打开浏览器(如果注册了 URL,则打开应用程序)
mailto:链接将打开您的邮件应用程序,如 mailto:phil@example.com
geo:链接将打开谷歌地图,例如 geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+CA
ntfy:// 链接将打开 ntfy(参见 ntfy:// 链接),例如 ntfy://ntfy.sh/stats
twitter:// 链接将打开 Twitter,例如 twitter://user?screen_name=...
...
 
9Action

您可以为通知添加操作按钮,让自己直接对通知做出反应。这一点非常有用,而且应用广泛。

您可以控制家用电器(打开/关闭车库门、改变恒温器的温度......),对常见的监控警报做出反应(磁盘已满时清除日志......),还可以做很多其他事情。一切尽在掌握。

目前支持以下操作:

查看: 点击操作按钮后打开网站或应用程序
广播: 广播:点击操作按钮时发送安卓广播意图(仅支持安卓系统)
http:点击操作按钮时发送 HTTP POST/GET/PUT 请求

10Email可以通过邮件发布消息
11Icon您可以在通知文本旁边添加一个图标。只需通过 X-Icon 标头或查询参数(或其别名 Icon)来指定图标所在的 URL。客户端将自动下载该图标(除非该图标已缓存在本地,且使用时间不超过 24 小时),并将其显示在通知中。图标会缓存在客户端本地,直到通知被删除。目前只支持 JPEG 和 PNG 图像。
12Delay

您可以延迟发送信息,让 ntfy 在稍后日期发送。这可以用来给自己发送提醒信息,甚至在以后执行命令(如果订阅者对信息采取了行动)。

使用方法非常简单。您可以使用 X-Delay 标头(或其任何别名:Delay、X-At、At、X-In 或 In)设置发送时间,可以指定 Unix 时间戳(如 1639194738)、持续时间(如 30m、3h、2 天)或自然语言时间字符串(如上午 10 点、晚上 8:30、明天、下午 3 点、星期二、上午 7 点等)。

从今天起,您可以设置的最小延迟时间为 10 秒,最大延迟时间为 3 天。目前无法进行其他配置。

2. 消息订阅方接口

unit Notify.Event.Contract;interfaceusesSystem.SysUtils,Notify.Types,Notify.Action.Contract,Notify.Attachment.Contract,System.Generics.Collections;typeINotifyEventActions = TDictionary<String, INotifyAction>;INotifyEvent = interface['{0342B585-BB88-4A63-9C41-8848B90B6042}']function Id: String; overload;function Id(const AValue: String): INotifyEvent; overload;function Time: Integer; overload;function Time(const AValue: Integer): INotifyEvent; overload;function Event: String; overload;function Event(const AValue: String): INotifyEvent; overload;function Topic: String; overload;function Topic(const AValue: String): INotifyEvent; overload;function Tags: TArray<String>; overload;function Tags(const AValue: TArray<String>): INotifyEvent; overload;function Click: String; overload;function Click(const AValue: String): INotifyEvent; overload;function Title: String; overload;function Title(const AValue: String): INotifyEvent; overload;function MessageContent: String; overload;function MessageContent(const AValue: String): INotifyEvent; overload;function Priority: TNotifyPriority; overload;function Priority(const AValue: TNotifyPriority): INotifyEvent; overload;function Action: INotifyAction; overload;function Action(const AValue: INotifyAction): INotifyEvent; overload;function Actions: INotifyEventActions;function Attachment: INotifyAttachment; overload;function Attachment(const AValue: INotifyAttachment): INotifyEvent; overload;function Icon: String; overload;function Icon(const AValue: String): INotifyEvent; overload;end;TNotifyEventProc = TProc<INotifyEvent>;implementationend.

接口说明:

订阅方的主体参数和发布方是一致的,但是订阅放方对了如下参数:

FieldRequiredTypeExampleDescription
id✔️stringhwQ2YpKdmgRandomly chosen message identifier
time✔️number1635528741Message date time, as Unix time stamp
expires(✔)️number1673542291Unix time stamp indicating when the message will be deleted, not set if Cache: no is sent
event✔️openkeepalivemessage, or poll_requestmessageMessage type, typically you'd be only interested in message
topic✔️stringtopic1,topic2Comma-separated list of topics the message is associated with; only one for all message events, but may be a list in open events
message-stringSome messageMessage body; always present in message events
title-stringSome titleMessage title; if not set defaults to ntfy.sh/<topic>
tags-string array["tag1","tag2"]List of tags that may or not map to emojis
priority-1, 2, 3, 4, or 54Message priority with 1=min, 3=default and 5=max
click-URLhttps://example.comWebsite opened when notification is clicked
actions-JSON arraysee actions buttonsAction buttons that can be displayed in the notification
attachment-JSON objectsee belowDetails about an attachment (name, URL, size, ...)

Attachment (part of the message, see attachments for details):

FieldRequiredTypeExampleDescription
name✔️stringattachment.jpgName of the attachment, can be overridden with X-Filename, see attachments
url✔️URLhttps://example.com/file.jpgURL of the attachment
type-️mime typeimage/jpegMime type of the attachment, only defined if attachment was uploaded to ntfy server
size-️number33848Size of the attachment in bytes, only defined if attachment was uploaded to ntfy server
expires-️number1635528741Attachment expiry date as Unix time stamp, only defined if attachment was uploaded to ntfy server

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67921.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MybatisPlus】LambdaQueryWrapper和QueryWapper的区别

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

自定义 视频/音频 进度条

复制代码根据自己需求改动就可以了 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname"viewport"conten…

如何保证数据传输的安全?

要确保数据传输的安全&#xff0c;您可以采取以下措施&#xff1a; 使用加密协议&#xff1a;使用安全的传输协议&#xff0c;如HTTPS(HTTP over SSL/TLS)或其他安全协议&#xff0c;以保护数据在传输过程中的安全性。加密协议可以有效防止数据被窃听或篡改。 强化身份验证&…

途乐证券-越跌越买!港股又回调,资金却坚定买入,行情何时到来?

港股重复震动。 8月14日&#xff0c;港股三大指数再次跌落&#xff0c;截至收盘&#xff0c;恒生指数跌1.58%&#xff0c;报18773.55点&#xff0c;恒生科技指数跌1.52%&#xff0c;国企指数跌1.79%。 进入8月以来&#xff0c;港股继续跌落&#xff0c;恒生指数单月跌落6.5%&a…

Collada .dae模型格式简明教程

当你从互联网下载 3D 模型时&#xff0c;可能会在格式列表中看到 .dae 格式。 它是什么&#xff1f; 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景。 1、Collada DAE概述 COLLADA是COLLAborative Design Activity&#xff08;中文&#xff1a;协作设计活动&#xff0…

vue3+vite配置vantUI主题

❓在项目中统一配置UI主题色&#xff0c;各个组件配色统一修改 vantUI按需安装 参考vantUI文档 创建vantVar.less文件夹进行样式编写 vantVar.less :root:root{//导航--van-nav-bar-height: 44px;//按钮--van-button-primary-color: #ffffff;--van-button-primary-backgr…

Python web实战之Django的AJAX支持详解

关键词&#xff1a;Web开发、Django、AJAX、前端交互、动态网页 今天和大家分享Django的AJAX支持。AJAX可实现在网页上动态加载内容、无刷新更新数据的需求。 1. AJAX简介 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在网页上实现异步通信的技术。通过…

Matlab图坐标轴数值负号改为减号(change the hyphen (-) into minus sign (−, “U+2212”))

在MATLAB中&#xff0c;坐标轴负数默认符号是 - &#xff0c;如下图所示 x 1:1:50; y sin(x); plot(x,y)可通过以下两语句将负号修改为减号&#xff1a; set(gca,defaultAxesTickLabelInterpreter,latex); yticklabels(strrep(yticklabels,-,$-$));或者 set(gca, TickLabe…

【软考】2023系统架构设计师考试

目录 1 软考资格设置 2 考试报名 3 考试准备 4 参加考试 5 考试感受 6 其他 1 软考资格设置 2 考试报名 报名网址&#xff1a;https://www.ruankao.org.cn/ 3 考试准备 4 参加考试 2023年下半年系统架构设计师考试时间为11月4、5日。 5 考试感受 6 其他 最近好像有地区…

CSS-grid布局

网格布局也叫grid布局&#xff0c;平常写样式的时候基本上都是用的flex布局。 像以下布局&#xff0c;用flex布局就可能会有有点麻烦&#xff0c;这时候用grid布局就方便的多了。 或者是照片墙 grid布局就是将容器划分为行和列&#xff0c;产生单元格&#xff0c;然后在指定的…

Labview选项卡之实现被选择选项卡工作

文章目录 前言一、使用选项卡二、实现被选择选项卡工作1、需求2、分析3、实现①、前面板②、程序框图 三、效果展示四、源码自取 前言 有些时候&#xff0c;我们做界面&#xff0c;需要好多个界面切换。如果是同一个 VI 里界面切换&#xff0c;一般都是选项卡了。切换不同选项…

【elementUi】绘制自定义表格、绘制曲线表格

要求绘制下图系列表格&#xff1a; 实现步骤: 1.绘制树&#xff0c;实现树勾选字段—>表格绘制字段 逻辑&#xff1a; 树&#xff1a;check-change“treeChart.handleCheckChange” 绑定点击选择事件&#xff0c;改变data.column3数据项&#xff1b;表格:columns"data…