Здравствуйте. Стоит задача - написать нативный пользовательский клиент для Mibew под Android.
Т.к. веб-API нету стал сниферить пакеты. На данный момент дошел до следующей схемы:
1) GET
http://localhost/mibew/index.php/b?i=simple&lang=ru Ставим куки: MibewSessionID и mibew_locale
2) GET
http://localhost/mibew/index.php/chat?locale=ru&url=http://localhost/&referrer= Ставим куку: MIBEW_UserID
3) POST
http://localhost/mibew/index.php/thread/update Отправляем форму (application/x-www-form-urlencoded; charset=UTF-8) с полем data с содержимым json закодированным в urlencode:
{
"signature": "",
"proto": "1.0",
"async": true,
"requests": [{
"token": "wnd143427929242821",
"functions": [{
"function": "processSurvey",
"arguments": {
"references": {},
"return": {
"next": "next",
"options": "options"
},
"groupId": 0,
"name": "Посетитель",
"info": null,
"email": null,
"message": "",
"referrer": "http://localhost/ ",
"threadId": null,
"token": null
}
}]
}]
}
token формируется по алгоритму "wnd"+(new Date()).getTime()+Math.round(50 * Math.random())
От сервера приходит что-то вроде:
{
"signature": "",
"proto": "1.0",
"async": true,
"requests": [{
"token": "wnd143427798604428",
"functions": [{
"function": "result",
"arguments": {
"next": "chat",
"options": {
"messageForm": {
"ignoreCtrl": false
},
"links": {
"mail": "\/mibew\/index.php\/chat\/6\/10036732\/mail",
"chat": "http:\/\/localhost\/mibew\/index.php\/chat\/6\/10036732"
},
"windowsParams": {
"mail": {
"height": 254,
"width": 603,
"resizable": false
},
"history": {
"width": 720,
"height": 560,
"resizable": true
}
},
"thread": {
"id": "6",
"token": 10036732,
"agentId": 0,
"userId": "557d5848060b67.99927082"
},
"page": {
"title": "Live Support",
"company": {
"name": "Your Company",
"chatLogoURL": ""
},
"mibewHost": "http:\/\/mibew.org"
},
"user": {
"name": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044c",
"canChangeName": true,
"defaultName": false,
"canPost": true,
"isAgent": false
},
"avatar": ""
},
"threadId": null,
"token": null,
"references": [],
"return": [],
"errorCode": 0
}
}]
}]
}
4) Далее каждые N секунд отправляет POST запросы на тот же
http://localhost/mibew/index.php/thread/update и формируются json'ы
Удалось выявить функции: update, updateMessages, result, close
Вопросы:
1. Подскажите, в правильном ли направлении я двигаюсь? Просто на 3 запрос не приходит ответа...
2. Может есть документация по формату обмена сообщениями в этих json'ах? Какие функции есть, какие параметры что означают?
3. Может быть есть способ решить задачу проще чем я собираюсь?