Как пересылать ответы на сообщения с помощью ruby ​​Lita?

Я работаю с чат-ботом, работающим с литовым рубиновым камнем, используя lita-hipchat. После ответа на литу с помощью хипчата лита сможет отправлять сообщения пользователю, создавшему ответ, через метод ответа. Я хотел бы изменить этот шаблон и иметь возможность отправлять хипчат вторичному пользователю, по сути, имея возможность копировать или пересылать один и тот же ответ более чем одному пользователю. Возможно ли это, используя только драгоценный камень Лита?

Я знаю, что отправка сообщений через http или драгоценный камень хипчата — это еще один вариант отправки сообщений вторичным пользователям, но я бы предпочел делать это через литу.


person Alex Cohen    schedule 28.02.2019    source источник
comment
как вы определяете, кто вообще является вторым пользователем?   -  person lacostenycoder    schedule 01.03.2019
comment
Я не совсем уверен, но похоже, что вы должны просто упомянуть кого хотите в своем ответе. Так что мой префикс вашего ответа с упоминанием имени @someonelse Here is my response. Подобно тому, что они делают в источнике здесь   -  person Antarr Byrd    schedule 01.03.2019
comment
@lacostenycoder вторичного пользователя можно найти с помощью сведений об учетной записи, таких как электронные письма, прикрепленные к пользователям, база данных lita redis и объект Lita::User rubydoc.info/gems/lita/Lita/User, обнаружив это, предоставит все детали, необходимые для сопоставления с данными, найденными в объектах ответа, используемых для отправки ответов.   -  person Alex Cohen    schedule 02.03.2019
comment
@AntarrByrd Это хорошее предложение, если эти сообщения отправлялись в комнату, доступную для просмотра несколькими пользователями. Однако я ищу способ отправки личного сообщения двум разным пользователям.   -  person Alex Cohen    schedule 02.03.2019


Ответы (1)


Это можно сделать с помощью Robot#send_messages. Например:

def my_handler_route(response)
  user2 = Lita::User.find_by_id("user2")
  target = Lita::Source(user: user2)
  robot.send_message(target, "This message will go to User2!")
end

По сути, это то, что делает Response#reply, но с удобством автоматического нацеливания на исходный источник.

person Jimmy    schedule 03.04.2019
comment
Это сработало! Я предпочитаю использовать Lita::User.find_by_name вместо Lita::User.find_by_id, но оба варианта работают: rubydoc.info/gems/lita/Lita/User#find_by_name-class_method - person Alex Cohen; 03.04.2019