Получение истории звонков через API
Пытаюсь задействовать функцию GET /project/phone-calls
По ней указано:
Вы можете ограничивать выборку, используя параметры limit и offset
При указании offset , но без указания limit ответ с сервера {"status":"error","error":"
1) Хотелось бы не ограничивать размер пакета, загружая только последние звонки.
2) В идеале, конечно, хотелось бы иметь гет-запрос, который позволил бы делать выборку записей более избирательно: по дате или по числу последних записей, а не первых.
Это возможно?
Ответ
Антон, новый метод для истории звонков с возможностей фильтрации уже доступен, но пока что не описан в документации. Чуть позже я вам скину описание ответом на это обращение.
Максим, а в каких пределах дат ожидать хотя бы черновой вариант документации?
Антон, черновой вариант есть сейчас. Предупрежу, что вероятность, что в нём что-то изменится до релиза хоть и довольно низкая, но в все же есть.
Ниже сначала идет краткое описание основных моментов. В конце есть пример запроса через 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 - думаю тоже будет понятно.
Вот пример тела сообщения:
{
"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);
...
Если вы напишите пример своего кода, то возможно я смогу подсказать, где ошибка.
Сервис поддержки клиентов работает на платформе UserEcho
Антон, новый метод для истории звонков с возможностей фильтрации уже доступен, но пока что не описан в документации. Чуть позже я вам скину описание ответом на это обращение.