Skip to content

Bot self identification. #2908

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions indra/llmessage/message_prehash.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1404,3 +1404,4 @@ char const* const _PREHASH_ExperienceID = LLMessageStringTable::getInstance()->g
char const* const _PREHASH_LargeGenericMessage = LLMessageStringTable::getInstance()->getString("LargeGenericMessage");
char const* const _PREHASH_GameControlInput = LLMessageStringTable::getInstance()->getString("GameControlInput");
char const* const _PREHASH_AxisData = LLMessageStringTable::getInstance()->getString("AxisData");
char const* const _PREHASH_MetaData = LLMessageStringTable::getInstance()->getString("MetaData");
1 change: 1 addition & 0 deletions indra/llmessage/message_prehash.h
Original file line number Diff line number Diff line change
Expand Up @@ -1405,5 +1405,6 @@ extern char const* const _PREHASH_ExperienceID;
extern char const* const _PREHASH_LargeGenericMessage;
extern char const* const _PREHASH_GameControlInput;
extern char const* const _PREHASH_AxisData;
extern char const* const _PREHASH_MetaData;

#endif
45 changes: 42 additions & 3 deletions indra/newview/llimprocessing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -451,6 +452,28 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
bool is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT &&
LLMuteList::isLinden(name);

/***
* The simulator may have 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();
}
*-----------------------------------------------------
*/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment seems incorrect to assume the the sender has been flagged as a bot. For more correctness please indicate the server may or may not have flagged...

"The simulator has flagged this sender as a bot..." --> "The simulator may flag this sender as a bot in 'metadata'.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"The simulator may have flagged...


std::string notice_name;
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.
notice_name = metadata["notice"]["id"].asString();
notice_args = metadata["notice"]["data"];
}

chat.mMuted = is_muted;
chat.mFromID = from_id;
chat.mFromName = name;
Expand Down Expand Up @@ -544,7 +567,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)
{
Expand Down Expand Up @@ -579,8 +602,16 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
region_message = true;
}
}
gIMMgr->addMessage(
session_id,

if (!notice_name.empty())
{ // 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_name, notice_args);
name = SYSTEM_FROM;
from_id = LLUUID::null;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than bother with is_system_notice you could pivot on whether notice_id is interesting: if (notice_id.notNull()).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your comment also flagged for me that the name notice_id may be mistaken to be a UUID.
Changed to notice_name and test for empty.


gIMMgr->addMessage(session_id,
from_id,
name,
buffer,
Expand All @@ -592,6 +623,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
position,
region_message,
timestamp);

}
else
{
Expand Down Expand Up @@ -1627,6 +1659,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)
Expand Down Expand Up @@ -1654,6 +1692,7 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
local_bin_bucket.data(),
S32(local_bin_bucket.size()),
local_sender,
metadata,
message_data["asset_id"].asUUID());
});

Expand Down
1 change: 1 addition & 0 deletions indra/newview/llimprocessing.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class LLIMProcessing
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
Expand Down
2 changes: 1 addition & 1 deletion indra/newview/llimview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3143,7 +3143,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;

Expand Down
18 changes: 17 additions & 1 deletion indra/newview/llviewermessage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2139,6 +2139,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,
Expand All @@ -2153,7 +2168,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)
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/da/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1613,6 +1613,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/en/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3720,6 +3720,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1584,6 +1584,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1614,6 +1614,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1586,6 +1586,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 &quot;[ITEM_NAME]&quot;</string>
<string name="inventory_folder_offered-im">Offerta cartella di inventario &quot;[ITEM_NAME]&quot;</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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/pl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4412,6 +4412,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1549,6 +1549,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4576,6 +4576,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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/tr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4579,6 +4579,10 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
<string name="inventory_folder_offered-im">
&quot;[ITEM_NAME]&quot; 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>
Expand Down
4 changes: 4 additions & 0 deletions indra/newview/skins/default/xui/zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4573,6 +4573,10 @@ http://secondlife.com/support 求助解決問題。
<string name="inventory_folder_offered-im">
收納區資料夾&apos;[ITEM_NAME]&apos;已向人提供
</string>
<string name="bot_warning">
您正在与人工智能机器人 [NAME] 聊天。请勿分享任何个人信息。
了解更多:https://second.life/scripted-agents。
</string>
<string name="share_alert">
將收納區物品拖曳到這裡
</string>
Expand Down
8 changes: 8 additions & 0 deletions scripts/messages/message_template.msg
Original file line number Diff line number Diff line change
Expand Up @@ -5668,6 +5668,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
Expand Down
2 changes: 1 addition & 1 deletion scripts/messages/message_template.msg.sha1
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b98fc0af5fa88601f5afa4f3c83f08188316e9a8
0d9706a9dfe23358140642a21db48980b3d016b2
Loading