MyChat Scripts: функция mJoinUserToConf, подключить пользователя к текстовой конференции

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.

Ещё посмотреть
Fetch

Length

mGetCIDAttribute

mGetConfUsersList

mGetUserAttribute

mGetUsersListInGroupByName

mIsUINOnline

mSendPrivateMessage

StrToIntDef

Класс TStringList