Добавил немного своего кода. Подключил xmpp библиотеку для работы с xmpp протоколом.
В файл: webim/libs/chat.php
Добавил:
function post_message_($threadid, $kind, $message, $link, $from = null, $utime = null, $opid = null)
{
...
/* Отправка всех сообщений пользователя в jabber */
$text = date("H:i:s");
if(!empty($from)){$text .= " - [ID Mess: ".$threadid."] - ".$from.":\n";}else{$text .= " - [ID Mess: ".$threadid."] - System Message:\n";}
$text .= $message;
require("../jabber/XMPPHP/XMPP.php");
require("../jabber/sendmessage.php");
/* Отправка всех сообщений пользователя в jabber */
/* Отправка всех сообщений пользователя на e-mail */
//mail('toxi@xxx.xxx.xxx','{Log Chat} - Live Support Chat',$message);
/* Отправка всех сообщений пользователя на e-mail */
perform_query($query, $link);
return mysql_insert_id($link);
}
Плюсы:
При отправки любого сообщения пользователем, все сообщения заносятся в БД webim и дублируются на jabber аккаунт, в том числе и сервисные, такие как:
admin (12:33:50 22/08/2013)
12:37:41 - [ID Mess: 31] - System Message:
Посетитель пришел со страницы https://xxx.xxx.xxx/about
admin (12:33:53 22/08/2013)
12:37:45 - [ID Mess: 31] - System Message:
Пожалуйста, подождите немного, к Вам присоединится оператор..
admin (12:34:35 22/08/2013)
12:38:27 - [ID Mess: 31] - System Message:
Посетитель пользователь покинул диалог
Минусы:
1. При первом входе пользователя в чат, выпадает ошибка 500. Если перезагрузить страницу, то чат откроется нормально. Причину пока не нашел, но она явно связана с тем, что я дописал код, который подключает библиотеку xmpp.
2. Нет возможности ответить пользователю из jabber аккаунта, так как сообщение уходит "в пустоту". Для этого нужно реализовать "прослойку" между чатом и jabber сервером.
Вижу пока два варианта:
1. Написать плагин для бота (я использую Talisman для конференций и информационных сообщений), который будет работать, как ретранслятор. Если пользователь напишет сообщение, бот перенаправит сообщение всем операторам, которые в онлайне и которые прописаны у бота в настройках плагина/настройках. А при ответе, оператор должен будет указать ник, которому отправить ответ и текст сообщения. При этом есть небольшой минус в том, что все сообщения будут писаться в одно окно сообщений от всех пользователей и будет очень трудно понять, какое сообщение от какого пользователя пришло.
Либо сделать как-то так, чтобы у оператора бот создавал фантомные контакты, например 30 штук, и каждому пользователю, который будет писать сообщение, привязывать один из свободных фантомных контактов и уже от привязанного фантомного контакта отправлять последующие сообщения, что будет удобно для оператора. Так как переписка с каждым пользователем будет идти отдельно.
2. Написать "прослойку" между jabber сервером и чатом на php и таймер на js, который будет дергать "прослойку", например, каждые 2 секунды и если появились новые сообщения на jabber аккаунте, то доставлять их.