Issue #2907: Process metadata sent along with chats of type IM_NOTHING_SPECIAL, The metadata can contain information about the bot status of the sender. It may also contain a system-injected notification that is displayed to the agent as part of the 1:1 chat window.
parent
20dfc94c5d
commit
7cd50ceace
|
|
@ -1402,3 +1402,4 @@ char const* const _PREHASH_HoverHeight = LLMessageStringTable::getInstance()->ge
|
|||
char const* const _PREHASH_Experience = LLMessageStringTable::getInstance()->getString("Experience");
|
||||
char const* const _PREHASH_ExperienceID = LLMessageStringTable::getInstance()->getString("ExperienceID");
|
||||
char const* const _PREHASH_LargeGenericMessage = LLMessageStringTable::getInstance()->getString("LargeGenericMessage");
|
||||
char const* const _PREHASH_MetaData = LLMessageStringTable::getInstance()->getString("MetaData");
|
||||
|
|
|
|||
|
|
@ -1403,5 +1403,6 @@ extern char const* const _PREHASH_HoverHeight;
|
|||
extern char const* const _PREHASH_Experience;
|
||||
extern char const* const _PREHASH_ExperienceID;
|
||||
extern char const* const _PREHASH_LargeGenericMessage;
|
||||
extern char const* const _PREHASH_MetaData;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -422,6 +422,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
|
|||
U8 *binary_bucket,
|
||||
S32 binary_bucket_size,
|
||||
LLHost &sender,
|
||||
LLSD metadata,
|
||||
LLUUID aux_id)
|
||||
{
|
||||
LLChat chat;
|
||||
|
|
@ -451,6 +452,30 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
|
|||
bool is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT &&
|
||||
LLMuteList::isLinden(name);
|
||||
|
||||
/***
|
||||
* The simulator has flagged this sender as a bot, if the viewer would like to display
|
||||
* the chat text in a different color or font, the below code is how the viewer can
|
||||
* tell if the sender is a bot.
|
||||
*-----------------------------------------------------
|
||||
bool is_bot = false;
|
||||
if (metadata.has("sender"))
|
||||
{ // The server has identified this sender as a bot.
|
||||
is_bot = metadata["sender"]["bot"].asBoolean();
|
||||
}
|
||||
*-----------------------------------------------------
|
||||
*/
|
||||
|
||||
bool is_system_notice = false;
|
||||
std::string notice_id;
|
||||
LLSD notice_args;
|
||||
if (metadata.has("notice"))
|
||||
{ // The server has injected a notice into the IM conversation.
|
||||
// These will be things like bot notifications, etc.
|
||||
is_system_notice = true;
|
||||
notice_id = metadata["notice"]["id"].asString();
|
||||
notice_args = metadata["notice"]["data"];
|
||||
}
|
||||
|
||||
chat.mMuted = is_muted;
|
||||
chat.mFromID = from_id;
|
||||
chat.mFromName = name;
|
||||
|
|
@ -544,7 +569,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
|
|||
}
|
||||
else
|
||||
{
|
||||
// standard message, not from system
|
||||
// standard message, server may have injected a notice into the conversation.
|
||||
std::string saved;
|
||||
if (offline == IM_OFFLINE)
|
||||
{
|
||||
|
|
@ -579,8 +604,16 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
|
|||
region_message = true;
|
||||
}
|
||||
}
|
||||
gIMMgr->addMessage(
|
||||
session_id,
|
||||
|
||||
if (is_system_notice)
|
||||
{ // The simulator has injected some sort of notice into the conversation.
|
||||
// findString will only replace the contents of buffer if the notice_id is found.
|
||||
LLTrans::findString(buffer, notice_id, notice_args);
|
||||
name = SYSTEM_FROM;
|
||||
from_id = LLUUID::null;
|
||||
}
|
||||
|
||||
gIMMgr->addMessage(session_id,
|
||||
from_id,
|
||||
name,
|
||||
buffer,
|
||||
|
|
@ -592,6 +625,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
|
|||
position,
|
||||
region_message,
|
||||
timestamp);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1627,6 +1661,12 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
|
|||
from_group = message_data["from_group"].asString() == "Y";
|
||||
}
|
||||
|
||||
LLSD metadata;
|
||||
if (message_data.has("metadata"))
|
||||
{
|
||||
metadata = message_data["metadata"];
|
||||
}
|
||||
|
||||
EInstantMessage dialog = static_cast<EInstantMessage>(message_data["dialog"].asInteger());
|
||||
LLUUID session_id = message_data["transaction-id"].asUUID();
|
||||
if (session_id.isNull() && dialog == IM_FROM_TASK)
|
||||
|
|
@ -1654,6 +1694,7 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
|
|||
local_bin_bucket.data(),
|
||||
S32(local_bin_bucket.size()),
|
||||
local_sender,
|
||||
metadata,
|
||||
message_data["asset_id"].asUUID());
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ public:
|
|||
U8 *binary_bucket,
|
||||
S32 binary_bucket_size,
|
||||
LLHost &sender,
|
||||
LLSD metadata,
|
||||
LLUUID aux_id = LLUUID::null);
|
||||
|
||||
// Either receives list of offline messages from 'ReadOfflineMsgs' capability
|
||||
|
|
|
|||
|
|
@ -3142,7 +3142,7 @@ void LLIMMgr::addMessage(
|
|||
const LLUUID& region_id,
|
||||
const LLVector3& position,
|
||||
bool is_region_msg,
|
||||
U32 timestamp) // May be zero
|
||||
U32 timestamp) // May be zero
|
||||
{
|
||||
LLUUID other_participant_id = target_id;
|
||||
|
||||
|
|
|
|||
|
|
@ -2137,6 +2137,21 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
EInstantMessage dialog = (EInstantMessage)d;
|
||||
LLHost sender = msg->getSender();
|
||||
|
||||
LLSD metadata;
|
||||
if (msg->getNumberOfBlocksFast(_PREHASH_MetaData) > 0)
|
||||
{
|
||||
S32 metadata_size = msg->getSizeFast(_PREHASH_MetaData, 0, _PREHASH_Data);
|
||||
std::string metadata_buffer;
|
||||
metadata_buffer.resize(metadata_size, 0);
|
||||
|
||||
msg->getBinaryDataFast(_PREHASH_MetaData, _PREHASH_Data, &metadata_buffer[0], metadata_size, 0, metadata_size );
|
||||
std::stringstream metadata_stream(metadata_buffer);
|
||||
if (LLSDSerialize::fromBinary(metadata, metadata_stream, metadata_size) == LLSDParser::PARSE_FAILURE)
|
||||
{
|
||||
metadata.clear();
|
||||
}
|
||||
}
|
||||
|
||||
LLIMProcessing::processNewMessage(from_id,
|
||||
from_group,
|
||||
to_id,
|
||||
|
|
@ -2151,7 +2166,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
position,
|
||||
binary_bucket,
|
||||
binary_bucket_size,
|
||||
sender);
|
||||
sender,
|
||||
metadata);
|
||||
}
|
||||
|
||||
void send_do_not_disturb_message (LLMessageSystem* msg, const LLUUID& from_id, const LLUUID& session_id)
|
||||
|
|
|
|||
|
|
@ -3723,6 +3723,10 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
|
|||
<string name="conference-title-incoming">
|
||||
Konference med [AGENT_NAME]
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
Du chatter med en bot, [NAME]. Del ikke personlige oplysninger.
|
||||
Læs mere på https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="no_session_message">
|
||||
(IM session eksisterer ikke)
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1614,6 +1614,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
|
|||
<string name="conference-title-incoming">Konferenz mit [AGENT_NAME]</string>
|
||||
<string name="inventory_item_offered-im">Inventarobjekt „[ITEM_NAME]“ angeboten</string>
|
||||
<string name="inventory_folder_offered-im">Inventarordner „[ITEM_NAME]“ angeboten</string>
|
||||
<string name="bot_warning">
|
||||
Sie chatten mit einem Bot, [NAME]. Geben Sie keine persönlichen Informationen weiter.
|
||||
Erfahren Sie mehr unter https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">Objekte aus dem Inventar hier her ziehen</string>
|
||||
<string name="facebook_post_success">Sie haben auf Facebook gepostet.</string>
|
||||
<string name="flickr_post_success">Sie haben auf Flickr gepostet.</string>
|
||||
|
|
|
|||
|
|
@ -3717,6 +3717,10 @@ Please reinstall viewer from https://secondlife.com/support/downloads/ and cont
|
|||
<string name="inventory_folder_offered-im">
|
||||
Inventory folder '[ITEM_NAME]' offered
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
You are chatting with a bot, [NAME]. Do not share any personal information.
|
||||
Learn more at https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">
|
||||
Drag items from inventory here
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1585,6 +1585,10 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].</string>
|
|||
<string name="conference-title-incoming">Conferencia con [AGENT_NAME]</string>
|
||||
<string name="inventory_item_offered-im">Ítem del inventario '[ITEM_NAME]' ofrecido</string>
|
||||
<string name="inventory_folder_offered-im">Carpeta del inventario '[ITEM_NAME]' ofrecida</string>
|
||||
<string name="bot_warning">
|
||||
Estás conversando con un bot, [NAME]. No compartas información personal.
|
||||
Más información en https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">Arrastra los ítems desde el invenbtario hasta aquí</string>
|
||||
<string name="facebook_post_success">Has publicado en Facebook.</string>
|
||||
<string name="flickr_post_success">Has publicado en Flickr.</string>
|
||||
|
|
|
|||
|
|
@ -1615,6 +1615,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].</string>
|
|||
<string name="conference-title-incoming">Conférence avec [AGENT_NAME]</string>
|
||||
<string name="inventory_item_offered-im">Objet de l’inventaire [ITEM_NAME] offert</string>
|
||||
<string name="inventory_folder_offered-im">Dossier de l’inventaire [ITEM_NAME] offert</string>
|
||||
<string name="bot_warning">
|
||||
Vous discutez avec un bot, [NAME]. Ne partagez pas d’informations personnelles.
|
||||
En savoir plus sur https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">Faire glisser les objets de l'inventaire ici</string>
|
||||
<string name="facebook_post_success">Vous avez publié sur Facebook.</string>
|
||||
<string name="flickr_post_success">Vous avez publié sur Flickr.</string>
|
||||
|
|
|
|||
|
|
@ -1587,6 +1587,10 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].</string>
|
|||
<string name="conference-title-incoming">Chiamata in conferenza con [AGENT_NAME]</string>
|
||||
<string name="inventory_item_offered-im">Offerto oggetto di inventario "[ITEM_NAME]"</string>
|
||||
<string name="inventory_folder_offered-im">Offerta cartella di inventario "[ITEM_NAME]"</string>
|
||||
<string name="bot_warning">
|
||||
Stai parlando con un bot, [NAME]. Non condividere informazioni personali.
|
||||
Scopri di più su https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="facebook_post_success">Hai pubblicato su Facebook.</string>
|
||||
<string name="flickr_post_success">Hai pubblicato su Flickr.</string>
|
||||
<string name="twitter_post_success">Hai pubblicato su Twitter.</string>
|
||||
|
|
|
|||
|
|
@ -6150,6 +6150,10 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
|
|||
<string name="inventory_folder_offered-im">
|
||||
フォルダ「[ITEM_NAME]」がインベントリに送られてきました。
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
[NAME]とチャットしています。個人情報を共有しないでください。
|
||||
詳細は https://second.life/scripted-agents をご覧ください。
|
||||
</string>
|
||||
<string name="share_alert">
|
||||
インベントリからここにアイテムをドラッグします。
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -4413,6 +4413,10 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
|
|||
<string name="inventory_folder_offered-im">
|
||||
Zaoferowano folder: '[ITEM_NAME]'
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
Rozmawiasz z botem [NAME]. Nie udostępniaj żadnych danych osobowych.
|
||||
Dowiedz się więcej na https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">
|
||||
Przeciągaj tutaj rzeczy z Szafy
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1550,6 +1550,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].</string>
|
|||
<string name="conference-title-incoming">Conversa com [AGENT_NAME]</string>
|
||||
<string name="inventory_item_offered-im">Item do inventário '[ITEM_NAME]' oferecido</string>
|
||||
<string name="inventory_folder_offered-im">Pasta do inventário '[ITEM_NAME]' oferecida</string>
|
||||
<string name="bot_warning">
|
||||
Você está conversando com um bot, [NAME]. Não compartilhe informações pessoais.
|
||||
Saiba mais em https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="facebook_post_success">Você publicou no Facebook.</string>
|
||||
<string name="flickr_post_success">Você publicou no Flickr.</string>
|
||||
<string name="twitter_post_success">Você publicou no Twitter.</string>
|
||||
|
|
|
|||
|
|
@ -4577,6 +4577,10 @@ support@secondlife.com.
|
|||
<string name="inventory_folder_offered-im">
|
||||
Предложена папка инвентаря «[ITEM_NAME]»
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
Вы общаетесь с ботом [NAME]. Не передавайте личные данные.
|
||||
Подробнее на https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">
|
||||
Перетаскивайте вещи из инвентаря сюда
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -4580,6 +4580,10 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
|
|||
<string name="inventory_folder_offered-im">
|
||||
"[ITEM_NAME]" envanter klasörü sunuldu
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
Bir bot ile sohbet ediyorsunuz, [NAME]. Kişisel bilgilerinizi paylaşmayın.
|
||||
Daha fazla bilgi için: https://second.life/scripted-agents.
|
||||
</string>
|
||||
<string name="share_alert">
|
||||
Envanterinizden buraya öğeler sürükleyin
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -4573,6 +4573,10 @@ http://secondlife.com/support 求助解決問題。
|
|||
<string name="inventory_folder_offered-im">
|
||||
收納區資料夾'[ITEM_NAME]'已向人提供
|
||||
</string>
|
||||
<string name="bot_warning">
|
||||
您正在与人工智能机器人 [NAME] 聊天。请勿分享任何个人信息。
|
||||
了解更多:https://second.life/scripted-agents。
|
||||
</string>
|
||||
<string name="share_alert">
|
||||
將收納區物品拖曳到這裡
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -5664,6 +5664,14 @@ version 2.0
|
|||
{ Message Variable 2 }
|
||||
{ BinaryBucket Variable 2 }
|
||||
}
|
||||
{
|
||||
EstateBlock Single
|
||||
{ EstateID U32 }
|
||||
}
|
||||
{
|
||||
MetaData Variable
|
||||
{ Data Variable 2 }
|
||||
}
|
||||
}
|
||||
|
||||
// RetrieveInstantMessages - used to get instant messages that
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
d7915d67467e59287857630bd89bf9529d065199
|
||||
0d9706a9dfe23358140642a21db48980b3d016b2
|
||||
Loading…
Reference in New Issue