MyChat Scripts: функция mJoinUserToConf, подключить пользователя к текстовой конференции
"Для разработчиков", "Серверные скрипты", "Описание функций", "Конференции", "mJoinUserToConf".
Включить указанного онлайн-пользователя в существующую текстовую конференцию. В дальнейшем пользователь будет подключаться к конференции автоматически, до тех пор, пока он сам её не покинет либо не исключит модератор.
Синтаксис
function mJoinUserToConf(const iUIN, iConfUID: integer): integer
Параметры и возвращаемые значения
Параметр |
Тип |
Значение |
iUIN |
integer |
идентификатор пользователя, должен быть онлайн, больше нуля; |
iConfUID |
integer |
идентификатор существующей конференции. |
Результат функции
Результат |
Значение |
0 |
всё Ок, пользователь подключен к конференции; |
-2 |
конференция с указанным UID не существует; |
-3 |
пользователь уже находится в данной конференции; |
-4 |
пользователь отключен от сервера (офлайн); |
-5 |
у пользователя есть бан на вход в эту конференцию; |
-6 |
у пользователя нет прав для присоединения к текстовым конференциям; |
-7 |
пользователь с указанным UIN не зарегистрирован на сервере; |
-8 |
указан неправильный пароль для входа в конференцию. |
Пример
Пользователь сервиса MyChat Guest подключается в WEB-браузере к конференции, в которую его пригласили. Он пишет сообщение, но выясняется, что в конференции нет никого, кроме него, и, возможно, встроенного робота Elisa. Тогда скрипт ищет первого попавшегося онлайн-пользователя из указанной группы, автоматически приглашает его в конференцию и генерирует сообщение от имени робота, чтобы сотрудник срочно ответил клиенту в конференции.
Скрипт обрабатывает событие OnConfMessage.
const
ALARM_SUPPORT_GROUP = 'На подхвате';
function OnConfMessage(iCID, iUIN, iUID, iMsgType: integer; sConfName, sMsg: string): boolean;
var
SL: TStringList;
sUsersList, sMsgTo: string;
iCount, iNewUIN: integer;
bFlag: boolean;
begin
if mGetCIDAttribute(iCID, 'ClientType') = 'mcguest' then begin
SL := TStringList.Create;
sUsersList := mGetConfUsersList(iUID);
SL.CommaText := sUsersList;
iCount := SL.Count;
if SL.IndexOf('0') <> -1 then dec(iCount);
SL.Free;
if iCount = 1 then begin // в конференции нет сотрудников, надо срочно кого-то пригласить
bFlag := false; // флаг, если хотя бы одного из сотрудников уведомили о том, что
// в конфе никого кроме клиента, сейчас нету
sUsersList := mGetUsersListInGroupByName(ALARM_SUPPORT_GROUP);
while length(sUsersList) > 0 do begin
iNewUIN := StrToIntDef(Fetch(sUsersList, ','), -1);
if mIsUINOnline(iNewUIN) then begin
mJoinUserToConf(iNewUIN, iUID);
sMsgTo := 'Пожалуйста, ответьте пользователю ' +
mGetUserAttribute(iUIN, 'DisplayName') +
' в конференции "' + sConfName + '"';
// сообщение от робота для сотрудника, что нужно
// срочно ответить клиенту в указанной конференции
mSendPrivateMessage(0, iNewUIN, sMsgTo, 1);
bFlag := true;
break;
end;
end;
end;
end;
result := true;
end;
begin
end.