民意调查
轮询资源包含有关特定数据请求的信息。创建轮询后,它将触发创建一个或多个任务以完成请求。
属性
名称 | 类型 | 描述 |
---|---|---|
id | 民意调查 ID | 资源标识符。 |
resource | 字符串,始终poll | 资源类型说明符。 |
organisation | 组织ID | 与该资源关联的组织。 |
key | 钥匙ID | 与该资源关联的密钥。 |
user | 用户身份 | 与该资源关联的用户。 |
source | 源ID | 民意调查所针对的来源。这可以是会话源的子源。 |
session | 会话ID | 民意调查正在使用的会话。 |
subscription | 可选订阅 ID | 关联的订阅对象 ID(如果适用)。 |
tasks_pending | 任务 ID 列表 | 与正在等待处理的轮询关联的任务。 |
tasks_processing | 任务 ID 列表 | 与正在处理的轮询相关的任务。 |
tasks_succeeded | 任务 ID 列表 | 与已成功的轮询关联的任务。 |
tasks_failed | 任务 ID 列表 | 与失败的轮询相关的任务。 |
tasks_suspended | 任务 ID 列表 | 与暂停的轮询相关的任务。 |
results | 包含结果对象的列表对象 | 由轮询任务生成的结果对象列表。 |
errors | 包含错误对象的列表对象 | 由轮询任务生成的错误对象列表。 |
state | 细绳 | 其中之一: pending 、 processing 、 completed 。 |
date_created | 约会时间 | 创建资源的时间。 |
date_started | 可选日期时间 | 民意调查何时开始处理。 |
date_completed | 可选日期时间 | 民意调查处理完成时。 |
任务
轮询资源的最重要作用是反映其相关任务的进度,并允许最终用户在这些结果可用后立即开始从中获取结果。因此,轮询资源公开了与任务相关的属性,其中,根据任务的状态对相关任务进行了分类。
结果
轮询中运行的任务发布的任何结果都将显示在轮询的results
属性中。这样可以在调查完成之前消耗结果。
错误
在轮询中运行的任务引起的任何错误将显示在轮询的errors
属性中。
状态
轮询状态仅反映轮询是等待初始化( pending
),正在进行( processing
)还是所有任务已完成执行( completed
)。
除了通过其关联任务之外,轮询不会反映任何错误状态。
有效载荷
轮询有效负载指示应检索哪些类型的信息,数据类型和文件。轮询有效载荷属性架构如下所述。
名称 | 类型 | 描述 |
---|---|---|
info_types | info_type 对象列表 | 指定应检索哪些信息类型。支持通配符* 。 |
data_types | data_type 对象列表 | 指定应检索哪些数据类型。 |
files | file ID 列表。 | 指定要检索的文件。 |
filters | 嵌套filters 对象 | 指定对检索到的数据应用哪些过滤器。 |
skip_files |
boolean | If set to true the poll will skip looking up and publishing attachments files, which includes any assets from photos or video feeds. |
例如,用于检索iCloud帐户源上所有类型的信息的轮询有效载荷将是:
{ "info_types": ["*"] }
要从iCloud备份或重新孵化中继源中检索各种消息传递数据,但仅从特定日期开始:
{ "data_types": ["ios_messages.messages", "whatsapp.messages", "viber.messages"], "filters": { "since": "2019-09-15T22:04:12Z", "until": "2021-06-02T12:00:00Z" } }
要检索iCloud照片库结果中引用的图像的文件数据,请执行以下操作:
{ "files": ["icpl://xyz123", "icpl://abc321"] }
不同的属性也可以同时使用:
{ "info_types": ["*"], "data_types": ["ios_phone.calls"] }
过滤器
过滤器允许客户端减少返回的数据量,仅返回可能感兴趣的数据。例如,您可以将 SMS 数据的轮询过滤为仅最后一个月的数据。
姓名 | 类型 | 描述 |
---|---|---|
since | 可选日期时间 | 仅筛选在此日期时间之后创建的数据。 |
until | 可选日期时间 | 仅筛选在此日期时间之前创建的数据。 |
phone_numbers | 可选数组 | 仅筛选与此列表中的电话号码相关的数据。 |
email_addresses | 可选数组 | 仅筛选与此列表中的电子邮件地址相关的数据。 |
订阅轮询负载中的过滤器
当使用订阅生成定期轮询时,轮询有效负载中设置的任何过滤器将仅在订阅的初始轮询中使用。此后,API 将执行以下操作:
- 忽略
until
任何值,以避免简单地重复重新轮询相同的间隔 - 如果设置了
until
,则下一次轮询将从该时间点开始获取数据 - 如果未设置
until
,则下一次轮询将从初始轮询向前获取数据(即API 将正常轮询)
数据级过滤器
数据级过滤器(例如phone_numbers
和email_addresses
)有助于将处理的数据减少到仅与您相关的项目。这些过滤器会删除与过滤器列表中的值之一匹配的另一项不匹配或不相关的任何数据项。以下面的有效负载为例:
{ "data_types": ["ios_messages.messages"], "filters": { "phone_numbers": ["0123456789"], "email_addresses": ["test@example.com"] } }
这将从 iOS 消息中返回与涉及指定电话号码或电子邮件地址的对话相关的任何消息,包括任何群组对话。指定多个要过滤的值会很有帮助,因为许多联系人同时拥有电话号码和电子邮件识别的帐户,例如“消息”的 iCloud 帐户。
请注意,对于电话号码,进行过滤比较时将忽略任何特殊字符,例如(415) 555‑0132
相当于4155550132
,也可以使用子字符串,例如4155550132
将匹配(415) 555‑0132
和+1 (415) 555‑0132
。通常,使用稍微不太具体的过滤器值(例如,通过避免国际呼叫代码)将产生更一致的结果。
创建POST /polls
针对特定会话创建针对数据的轮询。
仅当将会话的主要来源的子来源作为目标时,才应使用source
参数。例如,如果从rirelay.source
检索数据,则source
参数应为该源的ID。
名称 | 类型 | 描述 |
---|---|---|
key | 可选,钥匙 ID | (可选)覆盖用于此轮询的密钥。当让用户试用新功能时,这非常有用。 |
source | 可选,源 ID | (可选)以会话链接源的子源为目标。 |
session | 会话ID | 用于验证数据检索的会话。 |
subscription | 订阅号 | 用于执行轮询的订阅。如果提供了这一点,则可以省略source 和session 。 |
payload | 嵌套轮询负载 | 用于指定轮询的轮询负载 |
使用cURL
curl https://ricloud-api.reincubate.com/polls \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "session": "<session ID>", "payload": { "info_types": ["*"] } }'
使用ricloud-py
import ricloud poll_payload = { 'info_types': ['*'], } poll = ricloud.Poll.create( session='<session ID or ricloud.Session instance>', payload=poll_payload, )
样品回复
{ "id": "54554389-5f1a-4ccf-9bb8-024a031cf948", "resource": "poll", "organisation": 1, "key": 1, "user": 1, "source": 1, "session": "f5a7a7ef-ff21-47fe-9aa6-7ebd08123623", "subscription": null, "tasks_pending": [], "tasks_processing": [], "tasks_succeeded": [], "tasks_failed": [], "tasks_suspended": [], "results": { "data": [], "has_more": false, "total_count": 0, "url": "/polls/54554389-5f1a-4ccf-9bb8-024a031cf948/results" }, "errors": { "data": [], "has_more": false, "total_count": 0, "url": "/polls/54554389-5f1a-4ccf-9bb8-024a031cf948/errors" }, "state": "pending", "date_created": "2020-02-20T11:59:14.694337Z", "date_started": null, "date_completed": null }
检索GET /polls/{poll ID}
使用cURL
curl https://ricloud-api.reincubate.com/polls/<poll ID> \ -H 'Authorization: Token <your key_token>'
使用ricloud-py
import ricloud poll = ricloud.Poll.retrieve(<poll ID>)
列出GET /polls
名称 | 类型 | 描述 |
---|---|---|
key | 钥匙ID | 按关联键过滤。这是用户当时使用的密钥。 |
user | 用户身份 | 按关联用户过滤。 |
source | 源ID | 按目标源过滤。 |
session | 会话ID | 按目标会话过滤。 |
subscription | 订阅号 | 按关联的订阅进行过滤。 |
state | 细绳 | 按会话状态过滤。 |
date_created | 日期时间过滤器 | 按资源创建时间进行过滤。 |
date_started | 日期时间过滤器 | 按投票开始时间过滤。 |
date_completed | 日期时间过滤器 | 按投票结束时间进行筛选。 |
使用cURL
curl https://ricloud-api.reincubate.com/polls \ -H 'Authorization: Token <your key_token>'
使用ricloud-py
import ricloud polls = ricloud.Poll.list()
变更日志
2023-11-28
- 添加了对
email_addresses
和phone_numbers
过滤器的支持,允许检索仅与特定联系人相关的数据。
2022-07-08
- 添加了对轮询有效负载中的
until
过滤器的支持,以进行 SMS 提取。这补充了since
过滤器,允许客户端指定要从中检索数据的确切日期时间范围。
2020-05-05
-
errors
属性已添加到轮询对象。这是一个嵌套列表对象,其中包含与轮询相关的错误对象。
2020-02-20
- Major :轮询对象的
results
属性现在是嵌套列表对象,而不是简单的列表属性。当民意调查发布大量结果时,可以对结果进行分页。
2019-10-16
- 将
subscription
属性添加到轮询对象,以指示轮询是否由订阅触发。
2019-06-01
- 轮询对象
payload
属性现在可以由多种操作类型组成。这意味着可以使用有效负载中的任何或所有info-types
,data-types
和files
来创建轮询。 - Major不建议使用poll对象的
type
属性,而建议使用可组合的poll有效负载。