0
Completed

Получение истории звонков через API

Антон Пасютин 8 years ago updated by Максим 8 years ago 9

Пытаюсь задействовать функцию GET /project/phone-calls
По ней указано:

Вы можете ограничивать выборку, используя параметры limit и offset
При указании offset , но без указания limit ответ с сервера {"status":"error","error":"internal_error"}

1) Хотелось бы не ограничивать размер пакета, загружая только последние звонки.
2) В идеале, конечно, хотелось бы иметь гет-запрос, который позволил бы делать выборку записей более избирательно: по дате или по числу последних записей, а не первых.
Это возможно?

Answer

+1
Answer
Planned

Антон, новый метод для истории звонков с возможностей фильтрации уже доступен, но пока что не описан в документации. Чуть позже я вам скину описание ответом на это обращение.

GOOD, I'M SATISFIED
Satisfaction mark by Антон Пасютин 8 years ago
+1
Answer
Planned

Антон, новый метод для истории звонков с возможностей фильтрации уже доступен, но пока что не описан в документации. Чуть позже я вам скину описание ответом на это обращение.

Максим, а в каких пределах дат ожидать хотя бы черновой вариант документации?

Антон, черновой вариант есть сейчас. Предупрежу, что вероятность, что в нём что-то изменится до релиза хоть и довольно низкая, но в все же есть.


Ниже сначала идет краткое описание основных моментов. В конце есть пример запроса через curl.

Метод: /api/v1/project/calltracking/call/list
Допустимы GET и POST запросы

Обязательные поля: project и key (как обычно)

Фильтровать можно по любым полям звонка: дата, номер звонящего, набранный номер, статус, id визита, id заказа и т.п.
Доступен упрощенный синтаксис фильтров:
filters: [
["date", ">", "2016-01-01 20:00:00"],
["callee", "=", "791111234567"]
]

Для сортировки также доступен упрощенный синтаксис:
sort: ["date", "desc"]


Например, получаем последний звонок (сортировка по времени и лимит = 1) с номера 78121111111
curl -X POST 'https://cloud.roistat.com/api/v1/project/calltracking/call/list' -d '{"project": 123, "key": "xxx", "filters": [["caller", "=", "78121111111"]], "sort": ["date", "desc"], "limit": 1}'

Если будут вопросы, как получить какую-то конкретную информацию — пишите, подскажем.

Добрый день, Евгений.

Спасибо. Сам метод работает - историю звонков возвращает. Однако, пока самый простой фильтр наложить используя в качестве примера curl у меня не вышло. У меня имеется возможность указать параметры в URL или вложить в виде строки в тело запроса (например json).


1) если я вставляю в URL (идентификаторы изменены умышленно)

/api/v1/project/calltracking/call/list?key=b22180e09a0144d&project=128&filters=[["date", ">", "2016-06-09 16:01:47"]]

то историю звонков возвращает полностью, но фильтр не накладывается


2) если я делаю запрос:

/api/v1/project/calltracking/call/list?key=b2218050d28e0a12b5d&project=128

вкладываю фильтр в тело сообщения

"filters" : [["date", ">", "2016-06-09 16:06:57"]]

то получаю ответ {"status":"error","error":"incorrect_request","description":""}


куда вставлять фильтр правильно?

Вам надо делать POST запрос. В GET сложно вставить такие объекты правильно (хоть и возможно).

Правильно я понимаю, что вы используете не консольный curl, а делаете запрос из PHP или откуда-то еще? Я могу написать пример для PHP.

Запрос делаю из 1С

Post выдает ошибку. Это указанный мною случай 2. Обычно я в post запросах к другим ресурасам key и project отправляю в URL, а json в тело сообщения.

Если можете - укажите пример тела сообщения, можно и код на php - думаю тоже будет понятно.

+1

Вот пример тела сообщения:

{
"project": 123,
"key": "xxx",
"filters": [
["caller", "=", "78121111111"]
],
"sort": ["date", "desc"],
"limit": 1
}

То есть тело сообщения — это JSON объект. Возможно вы забыли фигурные скобки поставить вокруг.

В PHP это будет примерно так:

$postData = [
'project' => 123,
'key' => 'xxx',
'filters' => [
['caller', '=', '123']
]
];

$postBody = json_encode($postData);

...

Если вы напишите пример своего кода, то возможно я смогу подсказать, где ошибка.

Спасибо! вроде все заработало)