Синхронизация комментариев позволяет сохранять комментарии Cackle в базу данных вашего локального сервера для хранения и индексации поисковыми системами. При синхронизации нужно получать список каналов, а затем для каждой страницы(канала) вашего сайта получать комментарии используя нижеприведенное API.
HTTP метод | Endpoint | Ограничение | Комментарий |
---|---|---|---|
GET | http://cackle.me/api/3.0/comment/chan/list.json | 1 раз в 5 секунд | Получить список каналов. Максимум 100 каналов за 1 запрос. Кодировка данных запроса UTF-8. |
Параметры запроса:
Параметр | Обязательный | Описание | Комментарий |
---|---|---|---|
id | Да | Идентификатор вашего виджета | Можно получить в панели администрирования: меню "Установить", вкладка "CMS Платформа", выбрать WordPress. |
siteApiKey | Да | Секретный ключ виджета | Можно получить в панели администрирования: меню "Установить", вкладка "CMS Платформа", выбрать WordPress. |
accountApiKey | Да | Секретный ключ аккаунта | Можно получить в панели администрирования: меню "Установить", вкладка "CMS Платформа", выбрать WordPress. |
gtModify | Нет | Дата в миллисекундах | Передавая данный параметр, API вернет все следующие каналы, время модификации которых больше modified. Если параметр не передавать, то будет получен весь список каналов. |
HTTP метод | Endpoint | Ограничение | Комментарий |
---|---|---|---|
GET | http://cackle.me/api/3.0/comment/list.json | 1 раз в 5 секунд | Получить комментарии на определенной странице сайта. Максимум 100 комментариев за 1 запрос. Кодировка данных запроса UTF-8. |
Параметры запроса:
Параметр | Обязательный | Описание | Комментарий |
---|---|---|---|
id | Да | Идентификатор вашего виджета | Можно получить в панели администрирования: меню "Установить", вкладка "CMS Платформа", выбрать WordPress. |
siteApiKey | Да | Секретный ключ виджета | Можно получить в панели администрирования: меню "Установить", вкладка "CMS Платформа", выбрать WordPress. |
accountApiKey | Да | Секретный ключ аккаунта | Можно получить в панели администрирования: меню "Установить", вкладка "CMS Платформа", выбрать WordPress. |
chan | Да | Идентификатор страницы (channel) | Подробнее о канале. |
commentId | Нет | Идентификатор комментария Cackle | Передавая данный параметр, API вернет все следующие комментарии, id которых больше commentId. Не может быть передан одновременно с modified параметром. |
modified | Нет | Дата в миллисекундах | Передавая данный параметр, API вернет все следующие комментарии, время модификации которых больше modified. Не может быть передан одновременно с commentId параметром. |
Для успешной настройки синхронизации через данное API мы рекомендуем выполнить два действия:
Для сохранения всех комментариев, необходимо иметь список всех каналов на вашем сайте.
{"chans":[
{"id":101, "channel": '101', modified: ...},
{"id":102, "channel": '102', modified: ...},
...
{"id":216, "channel": '216'. modified ...}
]}
Для сохранения всех комментариев, необходимо иметь список всех каналов (параметр chan) на вашем сайте.
{"comments":[
{"id":101, "siteId": ...},
{"id":102, "siteId": ...},
...
{"id":216, "siteId": ...}
]}
Пускай ваш сайте http://mysite.ru зарегистрирован в Cackle с id 1, siteApiKey 123, accountApiKey 321.
Согласно алгоритму получения списка всех каналов с комментариями мы должны сделать следующее:
http://cackle.me/api/3.0/comment/chan/list.json?id=1&siteApiKey=123&accountApiKey=321
{"chans":[
{"id":1, "channel": '1', url: 'http://mysite.ru/page1',...},
{"id":2, "channel": '2', url: 'http://mysite.ru/page2',...},
{"id":3, "channel": '3', url: 'http://mysite.ru/page3',...}
{"id":4, "channel": '4', url: 'http://mysite.ru/page4',...}
]}
На предполагаемом сайте есть 4 страницы и на каждой установлен виджет комментариев Cackle:
Согласно алгоритму для сохранения всех комментариев мы должны выполнить следующее:
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page1&commentId=0
{"comments":[
{"id":1, "siteId": ...},
{"id":2, "siteId": ...},
{"id":3, "siteId": ...}
]}
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page2&commentId=0
{"comments":[
{"id":4, "siteId": ...},
{"id":5, "siteId": ...},
...
{"id":104, "siteId": ...}
]}
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page2&commentId=104
{"comments":[
{"id":105, "siteId": ...},
{"id":106, "siteId": ...},
...
{"id":205, "siteId": ...}
]}
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page2&commentId=205
{"comments":[
{"id":206, "siteId": ...},
{"id":207, "siteId": ...},
{"id":236, "siteId": ...}
]}
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page3&commentId=0
{"comments":[
{"id":237, "siteId": ...},
{"id":238, "siteId": ...},
...
{"id":337, "siteId": ...}
]}
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page3&commentId=337
{"comments":[
{"id":338, "siteId": ...},
{"id":339, "siteId": ...},
...
{"id":363, "siteId": ...}
]}
http://cackle.me/api/3.0/comment/list.json?id=1&siteApiKey=123&accountApiKey=321&chan=/page4&commentId=0
{"comments":[
{"id":364, "siteId": ...},
{"id":365, "siteId": ...},
...
{"id":463, "siteId": ...}
]}
Для отслеживания добавления или изменения (редактирование, удаление, модерация, голосование) Cackle комментариев, необходимо иметь список всех каналов (параметр chan) на вашем сайте и сохранять для каждого канала время последней модификации (параметр modified). Так как запросы на получения измененных комментариев происходят по-канально, то для начала необходимо получить список всех измененных каналов и уже только для них получать измененные комментарии. Поэтому сначала: запрашиваются изменные каналы, затем только для измененных каналов получаем список добавлений/изменений Cackle комментариев.
{"chans":[
{"id":101, "channel": ...},
{"id":102, "channel": ...},
...
{"id":216, "channel": ...}
]}
{"comments":[
{... "modified":"1432421378073"},
{... "modified":"1432447569166"},
...
{... "modified":"1432467294131"}
]}
На практике, для реализации алгоритма, обычно создается отдельная таблица, которая хранит значение [chan, modified]. Когда кто-то заходит на страницу вашего сайта, вы определяете канал страницы (chan) и по нему берете modified, далее можно делать запрос к API. Так же обязательно проверяйте таймер между запросами, он должен быть не меньше 5 секунд.
Пускай ваш сайт http://mysite.ru зарегистрирован в Cackle с id 1, siteApiKey 123, accountApiKey 321 и gtModify 1455652041007 сохраненный на предыдущих шагах получения списков каналов.
http://cackle.me/api/3.0/comment/chan/list.json?id=1&siteApiKey=123&accountApiKey=321>Modify=1455652041007
{"chans":[
{"id":1, "channel": '1', url: 'http://mysite.ru/page1',...},
{"id":2, "channel": '2', url: 'http://mysite.ru/page2',...},
Т.е на сайте есть 2 страницы с модифицированными коммментариями и на каждой установлен виджет комментариев Cackle:
Для реализации алгоритма необходимо создать в БД таблицу с каналом и временем последней модификации [chan, modified]:
Записать начальные значения (modified выберем как текущее время):
INSERT INTO chan_modified VALUES ('/page1', 1432421378073);
INSERT INTO chan_modified VALUES ('/page2', 1432421378073);
{"comments":[]}
так как вряд ли кто-то успеет опубликовать или изменить комментарии;{"comments":[
{"id":1, "siteId": ... "modified":"1432422582935"},
{"id":2, "siteId": ... "modified":"1432422739512"}
]}
UPDATE chan_modified SET modified = 1432422739512 WHERE chan = '/page1';
{"comments":[{"id":1, "siteId": ... "modified":"1432423183461"}}]}
UPDATE chan_modified SET modified = 1432423183461 WHERE chan = '/page1';
Библиотека синхронизации на php - Cackle comments sync