Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Script to Record Chat?

Sudane Erato
Grump
Join date: 14 Nov 2004
Posts: 413
01-27-2005 12:02
Does there exist a way to record chat? To perhaps a notecard, or an email?

I recall hearing that the Lindens had used such a device when in-world public discussions were held, but I cannot fathom how you could do that with the existing "llxxx" functions.

Thanks much for any assistance.

Sudane
JustAnother Millhouse
Registered User
Join date: 26 Dec 2004
Posts: 31
01-27-2005 12:33
Listen on channel 0 for everything, hold into it in an internal variable, then via a timer (or when the listener sees the internal variable is too big) sends an email with the contents of the variable then clears itself.

Downside is you're listening to everything on channel 0 and then storing it, so if you use this in a very active area its going to chew a ton of sim CPU time.

If you're still confused from this hit me up and i'll make you some sample code.

JustAnother
Zuzi Martinez
goth dachshund
Join date: 4 Sep 2004
Posts: 1,860
01-27-2005 12:38
i know they use scripted objects to relay what they're saying to "receivers" around the sl world so people can listen to town hall meetings. i always figured the way they got their transcripts was to copy and paste from the chat window.

recording chat and especially recording everything on channel 0 is very close to a TOS violation so be careful.
Camille Serpentine
Eater of the Dead
Join date: 6 Oct 2003
Posts: 1,236
01-27-2005 12:41
If you just want to record everything you said, copy and past from the chat history.
If you are recording conversations held on your land, other people's land, or public land, then it is most likely a TOS violation.
_____________________
Sudane Erato
Grump
Join date: 14 Nov 2004
Posts: 413
01-27-2005 12:57
I'm headed straight to the ToS docs to study that issue. Thanks for the warning.

BUT, how it's a ToS violation to record the chat from a group meeting or event mystifies me, when, as you point out, the process is routinely done by clipping and pasting. In other words, how could a ToS violation be incurred by accomplishing with a script exactly what is routinely and acceptably done without one?

But, the point is well taken, and I will surely read the fine print.

JustAnother, the only question I've got is, wouldn't you lose 20 seconds of proceedings during the time-out generated by the llEmail function? Also, I guess another concern would be that you'd lose the actual formatting of the "Chat" proceedings; the Avatar Name, ":" , followed by the text. Any way around that?

Thanks everyone very much!

Sudane
Upshaw Underhill
Techno-Hobbit
Join date: 13 Mar 2003
Posts: 293
01-27-2005 13:58
Though chat will sometimes queue to some extent, 20 seconds is unlikely. Your best bet for avoiding the llEmail delay would be to send a group of lines as link messages to another script to actually do the Emailing.

L8r,
UU
Kayin Zugzwang
A Superior Grouch
Join date: 7 Jun 2004
Posts: 269
01-27-2005 14:27
I say use a notecard. I haven't written stuff to notecards ever, but I'm sure its easily possible.

ANYWAYS. I don't think you could really get a ToS violation if it was ONLY on your land(meaning that it never extends outward). The best thing to do would be to put up either signs or IM warnings that this place and it's activities are monitored. Even otherwise, people chatting on your land are -- well -- chatting on your land. It's an arguable offense.

To continue, you want to use this for meetings -- which is, in no way, a ToS violation, as all parties involve would surely no of the recording taking place.

The general rule of thumb for any of this I find is intention. If you're trying to listen in to some juicy sex talk.... ToS violation. If you're merely monitoring your land in secret... eh, maybe. If you're overtly monitoring your land, no way... and in the context of a business meeting? absolutely safe.
Torley Linden
Enlightenment!
Join date: 15 Sep 2004
Posts: 16,530
01-27-2005 14:33
Sometimes, it's not just about recording: it's about playback. :)

After all, the chat history buffer is a recorder of your av's textual experiences in SL. It's already there -- but for one to copy and paste personal info from that on the forums would constitute a TOS violation (as an example).

Lest we have eidetic memories . . .
_____________________
Shack Dougall
self become: Object new
Join date: 9 Aug 2004
Posts: 1,028
01-27-2005 15:39
From: someone
I say use a notecard. I haven't written stuff to notecards ever, but I'm sure its easily possible.


Unfortunately, we can't write to notecards using LSL. It's a frequently requested feature, but we don't have it yet.
_____________________
Prim Composer for 3dsMax
-- complete offline builder for prims and sculpties in 3ds Max
http://liferain.com/downloads/primcomposer/

Hierarchical Prim Archive (HPA)
-- HPA is is a fully-documented, platform-independent specification for storing and transferring builds between Second Life-compatible platforms and tools.
https://liferain.com/projects/hpa
Danny DeGroot
Sub-legendary
Join date: 7 Jul 2004
Posts: 191
01-27-2005 15:47
You might want to check with a Linden directly on this if the ToS doc leaves any doubt, but I think the protection is against secret chat recorders.

If you're going to record a group chat for later distribution, you might take a page from the old Bell phone company standard, and have your recorder give a public warning like

CODE

llSay( 0, "Recording..." );


every 30 seconds or so.

Again, I wouldn't try it until I'd run the idea by a Linden. If the ToS language clearly forbids such a device, I wouldn't try it at all.

-- danny d.
Kurt Zidane
Just Human
Join date: 1 Apr 2004
Posts: 636
01-27-2005 16:03
I would put floating text above the object. making it very clear that some one is recording.
Sudane Erato
Grump
Join date: 14 Nov 2004
Posts: 413
01-27-2005 16:17
Well, I've finished scanning the ToS and the CS very closely for statements relating to this recording matter. Two sentences are particularly relevant:

"Community Standards: Disclosure
Remotely monitoring conversations, posting conversation logs, or sharing conversation logs without consent are all prohibited in Second Life and on the Second Life Forums. "

In the context of the entire paragraph here, this says to me that the issue is "consent". If we all agree to having our discussion recorded, then its perfectly acceptable. If we do it without "consent" of the persons being recorded, then it's prohibited. That seems pretty clear and reasonable, certainly basically the same as laws in the US.

Another sentence I found, this one in the ToS, sheds a little context on the matter:

"Terms of Service: Privacy
8.2 Linden Observation. You acknowledge and agree that Linden, in its sole discretion, may track, record, observe or follow any and all of your interactions within the Service. "

So, taken as a whole, I would say that Linden imposes a reasonable standard of privacy on the interactions between residents, a standard similiar to that used in the US, and probably other countries as well. BUT, they also remind us, in the second quote, that Second Life is distinctly a "company town", where, if they wish, they reserve the right to record any and all of our interactions, and, by implication, use those as they determine is in the interest of the company.

I point this out, not to complain, but as a reminder that, after all, Second Life is a business venture with priorities first and formost the success of that venture.

Anyway, back to the technical details of recording. :)

Sudane
Adam Marker
new scripter
Join date: 2 Jan 2004
Posts: 104
no remote monitoring without consent
01-27-2005 20:20
I have a setup that records chat text near my AV, then uses Macintosh Text-To-Speach to say the chat out loud on my computer. From what I learned talking to Lindens and other residents, I need no consent, since all I am recording is the stuff that my AV would normally hear anyway. Much like the point that someone made about making a copy from the chat history window. All you get is what you would normally hear.

Remotely monitoring conversations without consent is against the TOS. It does not matter if the recording device is on your land, someone else's land, a sandbox, or anywhere else.

Different Lindens have been known to have different opinions, and the residents I consulted may not be right, but at least this reading the the ToS is logical. To me.

The suggestion to consult a Linden is a good one. Just remember to ask for consent to record the conversation in case you need it later. (joke, kind of).
Moleculor Satyr
Fireflies!
Join date: 5 Jan 2004
Posts: 2,650
01-28-2005 00:08
From: JustAnother Millhouse
Downside is you're listening to everything on channel 0 and then storing it, so if you use this in a very active area its going to chew a ton of sim CPU time.


No. It won't. It'll use just as much CPU time as an object listening on channel 1234567. And it won't be a ton.
_____________________
</sarcasm>
Samhain Broom
Registered User
Join date: 1 Aug 2004
Posts: 298
01-28-2005 12:19
I have seen something posted about "Microphones" which are used to extend the distance of normal chat (normally 20m) so that people in larger areas can hear chat from say as far away as 30-40m from the speaker. I believe it was in this forum where I read it.

$.02----->
_____________________
rm -rf /bin/ladden #beware of geeks bearing grifts
JustAnother Millhouse
Registered User
Join date: 26 Dec 2004
Posts: 31
01-28-2005 21:22
From: Moleculor Satyr
No. It won't. It'll use just as much CPU time as an object listening on channel 1234567. And it won't be a ton.


How can this be true, if listen only fires for the specific channel its listening on. Channel 0 is going to fire for a ton more events than channel 1234567 being not all that much gets sent over that channel.

The simple fact the listen() event will be firing more often is whats going to blow the CPU
JustAnother Millhouse
Registered User
Join date: 26 Dec 2004
Posts: 31
01-28-2005 21:24
From: Sudane Erato

JustAnother, the only question I've got is, wouldn't you lose 20 seconds of proceedings during the time-out generated by the llEmail function? Also, I guess another concern would be that you'd lose the actual formatting of the "Chat" proceedings; the Avatar Name, ":" , followed by the text. Any way around that?
Sudane



listen() is going to pass you the key of the speaker, do a llKey2Name on it and just stringbuild yourself "AV Name:" + msg. Somsone else already answered the 20 second delay, just drop a message to some other object to handle the actual emailing.
Adam Marker
new scripter
Join date: 2 Jan 2004
Posts: 104
if you're in Detroit, you don't have to take a bus to get there
01-29-2005 05:49
listen() also passes you the name of the avatar that spoke, so you do not have to convert from the key (unless you want to for fun).
Moleculor Satyr
Fireflies!
Join date: 5 Jan 2004
Posts: 2,650
01-29-2005 06:13
From: JustAnother Millhouse
How can this be true, if listen only fires for the specific channel its listening on. Channel 0 is going to fire for a ton more events than channel 1234567 being not all that much gets sent over that channel.

The simple fact the listen() event will be firing more often is whats going to blow the CPU


Find a sim with a very high SimFPS. Rez a single object. Note the SimFPS. Now make a script with a llListen(0, in it, and nothing more. Note the SimFPS. Then change the channel to something else. The SimFPS should stay the same.

A llListen() call impacts a sim's performance, even if there isn't a listen() event attached to it. A llListen() call impacts the sim's performance FAR more than the code within a listen() event, in almost all cases, since the code within the listen() event is only called when triggered, whereas the llListen() is always active.
_____________________
</sarcasm>
Malachi Petunia
Gentle Miscreant
Join date: 21 Sep 2003
Posts: 3,414
01-29-2005 06:37
Intent and disclosure do matter in "recording chat" but remote listening has always been a pretty big no no.

The way I've seen this tastefully and "properly done" is asking at the start or finish of a conversation "I think {some group/forum/person} would find this discussion useful. May I send/post/give this to aforementioned locale?" and then edit out junk and do what you said. Note, this is still against the ToS, so no guarantees; however, I've seen folks post consensually "recorded" meetings of sufficient public interest without reprisals or outcry.

But it is technically 'gainst the rules, so ask, then think, think again, before choosing to do so. If you are doing so because you are displeased about something, you are likely to get dinged for it.
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
01-29-2005 07:05
From: Moleculor Satyr
A llListen() call impacts a sim's performance, even if there isn't a listen() event attached to it. A llListen() call impacts the sim's performance FAR more than the code within a listen() event, in almost all cases, since the code within the listen() event is only called when triggered, whereas the llListen() is always active.


Have you verified this on a deactivated listen (llListenControl)?
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river.
- Cyril Connolly

Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence.
- James Nachtwey
Moleculor Satyr
Fireflies!
Join date: 5 Jan 2004
Posts: 2,650
01-29-2005 07:08
From: Strife Onizuka
Have you verified this on a deactivated listen (llListenControl)?


If I recall, llListenRemove removing a llListen restores the SimFPS to its higher value. I suppose I could go in world and check, but quite honestly, I'm 95% sure already.
_____________________
</sarcasm>
Sudane Erato
Grump
Join date: 14 Nov 2004
Posts: 413
01-29-2005 07:33
From: JustAnother Millhouse
listen() is going to pass you the key of the speaker, do a llKey2Name on it and just stringbuild yourself "AV Name:" + msg. Somsone else already answered the 20 second delay, just drop a message to some other object to handle the actual emailing.

So, just trying to get this concept clear, now. You open a llListen for all messages on Channel 0. llListen hears some chat. Generates a listen() event, from which you can get the name of the speaker (directly, as Adam points out). Does this mean that llListen is going to generate a new listen() event each time a new avatar speaks? Once the listen() is triggered, I would think it would stay triggered until there was no more message stream. But I could see, also, how a different source might generate a new event. Remember, often, lots of people talk at once!

So, say we clarify that one. We've got discreet messages one from each source. You suggest spilling this into an email. So, each time another person speaks, an email is generated, with the message.

Well, I know that chat recorders don't seem to be available all over the place. But if one email per sentence is the only way to accomplish this task, I can see why not. I'm guessing I'm just going to have to wait for a function which writes to a notecard!

Anyone know if this task can be accomplished with an XML-RPC link?

Listen, I really appreciate everyone's thoughts about this. Seems to be a controversial topic. I'm pretty much a newbie, and a simple device to record the proceedings of a group meeting seemed kind of obvious to me. Well, I'm learning.

Thank you!

Sudane
Moleculor Satyr
Fireflies!
Join date: 5 Jan 2004
Posts: 2,650
01-29-2005 07:49
Ok. Lemme see if I can help out.

Each line of text, regardless of whom speaks it, calls listen() again.

Consecutive messages from the same avatar do not "build up" or anything in a single listen() event.

XML-RPC could easily be used, but you would have to get the object to email the RPC server when rezzed to get the outside server to activate the XML-RPC stream.
_____________________
</sarcasm>
Adam Marker
new scripter
Join date: 2 Jan 2004
Posts: 104
e-mail per sentence?
01-29-2005 09:22
You certainly could send an e-mail for each sentence or call to listen(), but you don't have to.

Another method: The "listen" script can send each sentence to a "collector" script in the same prim (via linkmessage). When the collector gets near the maximum size for an e-mail, it can send an e-mail and reset its collection. The catch is that you have to remember at the end to tell the collector to dump the non-full collection one last time.

p.s. and yes indeed, vote for "write to notecard" early and often
1 2