Опросы
Ресурс опроса содержит информацию о конкретном запросе данных. После создания опроса он инициирует создание одной или нескольких задач для выполнения запроса.
Атрибуты
название | тип | описание |
---|---|---|
id | идентификатор опроса | Идентификатор ресурса. |
resource | строка, всегда poll | Спецификатор типа ресурса. |
organisation | идентификатор организации | Организация, связанная с этим ресурсом. |
key | идентификатор ключа | Ключ, связанный с этим ресурсом. |
user | ID пользователя | Пользователь, связанный с этим ресурсом. |
source | идентификатор источника | Источник, на который нацелен опрос. Это может быть дочерний источник источника сеанса. |
session | идентификатор сессии | Сеанс, используемый опросом. |
subscription | дополнительный идентификатор подписки | Связанный идентификатор объекта подписки, если применимо. |
tasks_pending | список идентификаторов задач | Задачи, связанные с опросом и ожидающие обработки. |
tasks_processing | список идентификаторов задач | Задачи, связанные с опросом, которые обрабатываются. |
tasks_succeeded | список идентификаторов задач | Задачи, связанные с опросом, которые были выполнены успешно. |
tasks_failed | список идентификаторов задач | Задачи, связанные с опросом, которые не удалось выполнить. |
tasks_suspended | список идентификаторов задач | Задачи, связанные с опросом, которые приостановлены. |
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 . | Указывает, какие файлы необходимо получить. |
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 или источника Reincubate Relay, но только с определенной даты:
{ "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
должен быть идентификатором этого источника.
название | тип | описание |
---|---|---|
key | опционально, идентификатор ключа | При необходимости переопределите ключ, используемый для этого опроса. Это полезно, когда пользователи могут опробовать новые функции. |
source | необязательно, идентификатор источника | При необходимости выберите дочерний источник источника, связанного с сеансом. |
session | идентификатор сессии | Сеанс, который будет использоваться для аутентификации получения данных. |
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 | идентификатор ключа | Фильтровать по связанному ключу. Это ключ, используемый пользователем в данный момент. |
user | ID пользователя | Фильтровать по связанному пользователю. |
source | идентификатор источника | Фильтрация по целевому источнику. |
session | идентификатор сессии | Фильтрация по целевому сеансу. |
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
- Для извлечения SMS была добавлена поддержка фильтра
until
в полезных нагрузках опроса. Это дополняет фильтрsince
, позволяющий клиентам указывать точный диапазон дат и времени для получения данных.
2020-05-05
- Атрибут
errors
был добавлен в объект опроса. Это объект вложенного списка, содержащий объекты ошибок, связанные с опросом.
2020-02-20
- Важнейший : атрибут
results
объекта опроса теперь является вложенным списком, а не простым списком. Это позволяет разбивать результаты на страницы, когда опрос публикует большое количество результатов.
2019-10-16
- Добавляет атрибут
subscription
в объект опроса, чтобы указать, был ли опрос инициирован подпиской.
2019-06-01
- Атрибут
payload
объекта опроса теперь может состоять из нескольких типов операций. Это означает, что опрос может быть создан с любым или всемиinfo-types
data-types
иfiles
в полезной нагрузке. - Major Атрибут
type
в объекте poll устарел в пользу составных полезных нагрузок опроса.