"Если вдруг открылся люк, не пугайся, это глюк!" (с) Если что-то работает не так, вы нашли ошибку или опечатку в программе — вам в этот раздел
Аватара пользователя
АндрейКоротаев
Добрый день.
Не получается общаться с роботом Elisa любому из пользователей чата.
При отправке приватного сообщения роботу в консоли получаю сообщение:
[...] Ошибка #0020: пользователь не может принимать приватные сообщения

При этом, в журнале системных протоколов на сервере появляются сообщения:
[...]Ошибка #25: у пользователя UIN: 0 недостаточно прав для получения приватного сообщения

Отсюда вопрос: как разрешить общение с роботом?
Сервер MyChat 6.3.0.300 работает как служба на Windows Server 2008 R2
Клиенты MyChat 6.3.0.5 запущены внутри одной доменной сети
Аватара пользователя
Алексей Пикуров
Здравствуйте, Андрей.

А зачем вашим пользователям общаться с роботом? Что вы хотите получить в итоге?
Аватара пользователя
АндрейКоротаев
Есть желание реализовать выдачу информации пользователю в приватном сообщении скриптом.
Т.е. по текстовому запросу пользователя роботу выдать информацию только запросившему пользователю.
Да и сам робот по умолчанию приглашает пообщаться:
Elisa> Добрый день. Я робот, а не девушка, как можно было бы предположить :) Со мной можно поговорить, но отвечать я не буду. Во всяком случае, пока меня этому не научат разработчики. Когда научат? Спросите лучше у них ;)
Аватара пользователя
Алексей Пикуров
Окей, сегодня что-то решим, я отпишу немного позже.
Аватара пользователя
АндрейКоротаев
Алексей Пикуров писал(а):Окей, сегодня что-то решим, я отпишу немного позже.

Может быть есть какое-либо готовое решение, пусть не в том виде, как я себе представил?
У меня сложилось впечатление, что робота можно использовать так после прочтения этой статьи: «О бедной Элизе замолвите слово…»
Аватара пользователя
Алексей Пикуров
Почему, нормальное решение. У нас есть разные варианты, есть Integration API и ещё много чего, но тот вариант, что вы хотите использовать, тоже вполне себе пригоден.

Ожидайте, я отвечу немного позже, разберусь, что там происходит.
Аватара пользователя
Алексей Пикуров
Так, кое-что подкрутили в сервере, обновите его: https://nsoft-s.com/files/mcserv.zip

Пример скрипта:

Код: Выделить всё
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
  sOut: string;
  bFlag: boolean;
begin
  bFlag := true;
 
  if iUINTo = 0 then begin
    sMsg := Trim(LowerCase(mConvertMsgToPlainText(sMsg, iMsgType)));
    sOut := '';
 
      if (sMsg = 'help') or (sMsg = '?') then sOut := HELP else
      if sMsg = 'ip' then sOut := mGetUserAttribute(iUIN, 'IP_Address');

      if length(sOut) > 0 then begin
        bFlag := false;       
        mSendPrivateMessage(0, iUIN, sOut, 1, true);
      end; 
  end;   

  result := bFlag;
end;

begin

end.


Вставьте его в событие OnPrivateMessage и включите:

elisa-talk-server-script.png

В клиенте это будет выглядеть приблизительно так:

elisa-talk.png

Я сделал, что ваши запросы не отображаются в логе (bFlag := false), но вы можете это изменить.

Пробуйте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
АндрейКоротаев
Сервер обновил. Elisa разговаривает.
Спасибо большое за оперативное решение вопроса.