Notes.txt
Swinehart, August 3, 1987 10:31:55 am PDT
Copyright Ó 1985, 1986, 1987 by Xerox Corporation. All rights reserved.
Vital
August 3, 1987 9:56:25 am PDT
Finch
Comments about new log
Server time and workstation time may differ.
Home call, when invoked from log, generates a new call addressed to the phone number.
Call to service (T-T-S) reports call to last called-party field instead of "t-t-s server".
No entry appears at all for reserved and parsing states.
Can get "completed" calls in italic font.
Busy calls are reported as "failed".
"abandoned" needs to be further characterized:
incoming: disconnect without answer, caller gave up.
outgoing: we gave up, before/after dialing.
Prefer fixed-pitch font, so that bold-face doesn't change occupied field width.
Possibly, "at home" as a specification should be ignored unless the request came directly from the command tool. It should still be added to the specification when blue-button commands are issued.
July 31, 1987 5:16:43 pm PDT
Thrush
Overzealous error reporting
"Normal" Lark and Smarts crash messages should be converted to less than maximum priority, and the reporting-level stuff changed so that they are not mailed to me. Includes some of the "can't find referenced conv" messages.
July 29, 1987 3:45:25 pm PDT
RPC Stuff
Pending calls when server restarts cause trouble.
Somehow, if you take the server down and bring another back up, right after the LBExport, previously bound calls on workstations get through the filters all the way into the Loganberry dispatcher on the server and then crash in ways that don't even seem necessary (VM fault). They should have been rejected out of hand higher up. Needs exploration.
July 28, 1987 5:48:53 pm PDT
VoiceRopeServer
Down with GList.
BluejaySmartsImpl should not depend on GList. Then configs, df's, et al need to be adjusted.
July 27, 1987 1:24:57 pm PDT
Finch/VoiceRope
Circular structures exist in VoiceRopeImpl
Back-pointer from VoiceRopeDesc to ConvDesc produces circular structures if not broken when the cDesc is no longer needed. Unfortunately, nobody knows when that is. Pointer was ephemeral, created and set only when the vrDesc was used, but that led to synchronization problems, the pointer disappearing out from under its uses. Could put it back if VoiceRopeImpl were protected by appropriate monitors.
July 24, 1987 11:06:12 am PDT
VoiceRopeServer
Need to implement VoiceRopeServer.Fetch/Store operators.
Interface needs to revive the Fetch operator and to include a Block-Fetch operator. Should also include some sort of routine(s), which we don't have to implement now, for supplying samples directly into a voice rope. This interface must be extended, and the Fetch operators implemented, before we release the system on the world.
July 23, 1987 11:28:45 am PDT
July 30, 1987 6:17:56 pm PDT (once only failure of multicast code?)
Thrush
Three-way conference (a) breaks up, and (b) seems not to be set up entirely properly. Seemed like a daisy chain or something. test it again later.
July 20, 1987 4:16:20 pm PDT
Finch
Poaching doesn't transfer well from one workstation to another.
Poaching at site X while already poaching from site Y doesn't work. The Register operation doesn't seem to cause a prior Deregister, so Y doesn't get any CheckIn[$goodBye] word. Even if it did, it would just try to connect again. In that instance, enabled�LSE is required. Need both a way to specify it and a way to implement it.
July 19, 1987 8:21:47 pm PDT
LarkSynthesizer
Synthesizer Flushing doesn't report right.
Doesn't do anything like the right thing about Flush. Doesn't really get flush reports. Also, at the Lark level, possibly 15 events fills a buffer too full? We get funny enqueue errors, with messed up EventReport processes, and the like. Must investigate further, later.
July 30, 1987 6:12:02 pm PDT
Finch
Finch icons should always reflect existence of in-progress conversations
Should indicate iconically when the phone is off hook, a number is being collected, ... Should never be just a telephone when state[any conv] { notReallyInConv.
Finch
March 10, 1987 7:36:25 am PST
Finch
Ideas for lightweight Finch tool.
Should not display icons until "Finch" or one of its other commands is issued. Should be possible to zap both the directory and the Finch window any time to get similar results. Icon appears when call starts, disappears when it ends if it hasn't been opened or something. Generally unobtrusive behavior. Maybe have a little bird picture in a herald button to indicate presence, invoke this operation. One tool becomes two (command level, viewer level), separation thereof. Should be able to avoid any of the viewer level stuff for GFI conservation. Unfortunately, NameDB and its friends seem inevitable. Directory should be searchable when there's no displayed directory.
July 16, 1987 9:57:55 am PDT
Finch
Nits in connection with new error/connection management code
Disconnect report produces strange conversation empty log selection.
Finch properly reports conversations in progress on reconnect, but when you terminate one, it doesn't get its selections right, leaving the in-progress one selected, adding a new one and reporting it as abandoned.
Conversation log reports are not well-handled.
No attempt to relate conversation log entry before last disconnect to conversations reported after next reconnect.
Should be enabled/connected status fields maintained in Finch viewer somewhere, and three icons representing the three valid states: [disabled, disconnected], [enabled, disconnected], [enabled, connected]. Need to add Lark-running indication, too. Consider reporting of system state at CheckIn time.
Should be an icon representing off-hook/dialing state.
Still need changes to CheckIn to include informational messages (and a way to issue them.)
Finch complain (text messages) too much in some places, too little in others (nb analysis).
When a new connection has been made, we also reregister. This changes the valid local partyID and smartsID. On a retry, those have to be used. Actually, many of the original calls could leave these out, since we have to put them in anyway.
July 15, 1987 10:36:04 am PDT
Finch
Use of conversation log to redial; other conversation log stuff
Must retain, independent of cDesc, enough information with each log entry to redial by name, and to know if a later reported conversation either (a) is really the same conversation as one we have already displayed—due to crashes or network problems that caused disconnection, or (b) can replace a trivial one that we already displayed—the current off-hook-but-no-call-ever-placed situation. Enough might be name of other party(s?), max state reached (still a puzzle), conversation ID. Need to decide what to do about multiple-party calls, visitor reports, . . . still favor TiogaButtons replacement of existing thing.
April 17, 1987 11:54:50 am PDT, December 23, 1986 3:49:42 pm PST
July 30, 1987 6:10:56 pm PDT (fixed, but a cleanup pass is needed)
Finch
Identification of callers and callees in Finch tool.
Finch never looks at the intendedParty field of the partyInfo, so it can't possibly get its to/from reports right. But even so, the name fields as set by ThPartyPrivate.DoDescribeParty seem questionable, at least in visiting cases. Suppose Strowger is visiting PolleZ, and Strowger gets an outside call. The calling party's name field shows up at PolleZ's Finch as "Strowger.lark (outside line)". You'd like to report "Call to Strowger.lark (via PolleZ's party's intendedName field) from outside line (via the calling party's name field)". If PolleZ gets an outside call in the same situation, the calling party's name field shows up at PolleZ's Finch as "PolleZ.pa (outside line)". (Polle)
April 27, 1986 8:23:39 pm PDT
Finch
Error report problems.
Reporting of problems in conversation log is still pretty bad.
March 14, 1986 6:53:46 am PST
Finch
Walnut error problem.
Finch should catch WalnutDefs.Error and do something or other; happens when Walnut fails and can't read the message to see if we should read the database. Probably assume there's a voice ID and go on.
December 19, 1986 1:45:04 pm PST, July 30, 1987 6:11:22 pm PDT
Finch
Need for better name depiction in Finch.
indicate real names of people, rather than RNames, in Finch log. Real names on screen, both names in permanent log? Need a general cleanup of naming and phone number management.
February 2, 1987 10:55:34 am PST
All
LarkOn state indicator in Finch needed.
Provide facilities for determining in Finch if the Lark is up and functioning. Actually, GetParty["Self", $telephone] should do pretty well. Then need better control over busy-handling for the simple procedures like TextToSpeech[...]. Definitely need some workstation-side packaging. This is in response to Fiala's complaints.
Use of Names in the Etherphone system, as of 7/30/87
July 30, 1987 11:08:04 am PDT
ThParty.PartyInfo provides:
name and intendedName
own and intended PartyID
type, enabledness
voicePath: TRUE if party or its poachee has a voice path.
other indicators of activity.
via ConvInfo, various conversation attributes, along with party ID of originator.
FinchSmartsImpl.NoteNewState converts trunk intendedName fields to "outside line" when appropriate.
FinchSmartsImpl.GetActiveConversation demands that prefix[partyInfo.name] = service name. That's because only the $description version is available.
FinchToolImpl.ReportConversationState:
CLog: Compare name and intendedName to determine whether to name both parties.
CLog: In OtherParty (the workhorse), use intendedName, use type to determine authenticity ("?" for $telephone).
ThParty.NameReq: TYPE = ATOM; -- { $owner, $current, $description, $address, $none };
$owner: RName of creator of this party;
same as $current for telephone and individual parties;
RName of trunk's owner for trunks;
Idle service RName for services.
$current: Current assignment;
identity of party on the other end of a $trunk,
or modified service name identifying user.
$address:
meaningless but same as $current for all but $trunk,
the phone number for $trunk
$description: dolled-up version of $current, suitable for framing, including all known names and numbers, for Finch and so on.
    Telephone Trunk      Individual   Service
owner   PolleZ.pa PolleZ.pa     PolleZ.pa   recording.lark
current  PolleZ.pa XYZ1      PolleZ.pa   recording.lark
description PolleZ.pa XYZ (94153921234)3 PolleZ.pa   recording service (PolleZ.pa8)
       941539212344
       outside line5
       ABC (outside line)6
address  PolleZ.pa 941539212342   941539212347 PolleZ.pa8
              PolleZ.pa7
              NIL7
none   NIL  NIL      NIL    NIL
Notes:
1. The name used to identify an outside party, either just descriptive or the key in a database query.
2. The outside party phone number for outgoing calls: see number analysis
3. Both description and number are known.
4. Number was supplied without description.
5. Incoming call.
6. Incoming call following outgoing call in which a description was supplied. Bug?
7. Describe[poachee, $address] if there is a poachee, else NIL.
8. Most recent individual to reserve this service party.
ThParty.GetPartyInfo[...nameReq] produces PartyInfos, either just one or descrs for all parties.
via DoDescribeParty[...nameReq] for both name and intendedName; NIL if nameReq=$none
called from LarkSmartsImpl with nameReq=$none
LarkSmartsSupImpl[$current] to get rName for use in fetching ring tune.
FinchSmartsImpl.NoteNewState[$description] to obtain en masse information about the conversation, when number of parties changes or a party's state changes in significant ways (activeness, idleness).
ThParty.DescribeParty[...nameReq] returns:
name: based on nameReq.
type
partner (poacher or poachee)
visitee (if any),
visitors (a list, if any)
names via GetRnameFromParty; other fields straightforward.
ThSmartsPrivate.DBInfo[$current] to implement DBInfo
LarkTrunkSmartsImpl.CmdRinging[$owner] to identify recipient rName when trunk rings.
LarkTrunkSmartsImpl.NoteNewTkState[$address] to supply telephone number to LarkOut for Feeping.
TUImpl.Party[$owner, $current] To obtain descriptions for the "about" functions; $owner for trunks, $current for telephones and individuals, LocalSimulationOf["$address"] for services.
FinchSmartsImpl.VisitorFunctions[$none] to obtain visiting attributes.
ThParty.GetNumbersForRName provides a laundered access to the NameDB white pages,
returning only full RName, one office number, one home number. Should probably go away, in favor of direct consultation through NameDB.
FinchDirectoryImpl.PhoneQueryCmd to query WhitePages at user request.
ThSmartsPrivate.DBInfo[] packages up a number of NameDB and DescribeParty calls, and does some other rName processing.
via ThParty.DescribeParty; ...[$current] to obtain rName for specified party.
called within LarkSmarts implementations to obtain Party attributes.
ThPartyPrivate.MakeServiceRname: PROC[serviceName: Thrush.ROPE]
RETURNS [serviceRname: Thrush.ROPE, serviceRnameAtom: ATOM];
Service Name is the formal descriptor of one of the voice services, such as "Recording", "Text-to-Speech", and so on. The result is "<serviceName>.Lark", as a ROPE and as a corresponding ATOM. Permits lookup of service attributes in NameDB database, and representation of service in Triples database. Please repair comment in ThPartyPrivate.
ThPartyPrivate.DoDescribeParty[party, nameReq] => name.
Produces names following the table above.
DescribeParty[nameReq]... implementation
GetRNameForParty[nameReq]... implementation
GetPartyInfo[nameReq]... implementation
ThPartyPrivate.GetRnameFromParty[party, nameReq] => rName, atom
via DoDescribeParty
ThPartyInitImpl.GetIdleParty[$current] to obtain name returned by $address calls to reserved services.
ThPartyInitImpl.GetPartyFromNumberInt[$current] to obtain user's own telephone extension for use in Intelnet calls.
ThPartyInitImpl.GetRelatedParty[$owner] to find the right trunk or individual/telephone party to connect to.
ThPartyOpsImpl.MakeSubstitution[$owner] to implement policy that when Finch logs in, "splice" only occurs if this is the Finch user's "home" telephone.
Use of Phone Numbers in the Etherphone system, as of 7/30/87
Phone number syntaxes:
Finch command tool, Finch callee fields: [<digit>| . ]<non-blank>*;
FinchTool level converts letters=>digits, retains but ignores punctuation.
Numbers can be:
3-4 digit Centrex numbers (if beginning with 9, they're really local CO numbers)
5 digit 7xxxx numbers => 9408737xxxx (Sunnyvale)
7-digit local CO numbers (leading 9 will be supplied)
8-digit local CO numbers, beginning with 9, or Intelnet numbers, beginning with 8
10-digit DDD numbers (leading level (8 or 9) will be supplied)
11-digit DDD numbers, (explicitly including leading digit).
9011...., any length; international calls.
TDirs: Same as above, except that field values are assumed to be numbers (except for "*"), whether or not they begin with <digit> or '. . The number should have one of the forms, modulo punctuation, described just below.
WhitePages Loganberry Databases:
8*yyy-xxxx (Intelnet numbers)
8*nnn-yyy-xxxx (DDD numbers, to be dialed via Intelnet, outside the region)
9(nnn)yyy-xxxx (DDD numbers nearby (Intelnet won't work), for non-Intelnet users)
9-011-xyzwabcde (International numbers; not usually dialed via Intelnet.)
In other words, the full number, including level, best describing the address.
Etherphone touchpad:
Same as Finch command tool, except that only digits are available, level (8 or 9) must always be supplied explicitly, and # is needed at times to terminate variable-length sequences (most 1-6 digit sequences, international calls, some others?). *0 stuff is separate.
Phone number handling procedures, In Finch
FinchToolImpl
DoPhone
SetContents used to set calledParty Finch field
FinchDirectoryImpl.CallByDescription to actually process callee arguments.
Commander commands, caller/callee field commands, selection commands, redial commands come through here.
FeepCmd
calls FeepValue to get digit string before presenting string to FinchSmarts.Feep
FeepValue:
rope => rope: converts letters to digits, leaves punctuation in place.
ReportConversationState:
SetContents used to set calledParty and callingParty Finch field
RepairIntelnet[OtherParty] used to get decent descriptions of the callers (and visiting recipients), when phone numbers are involved.
OtherParty:
Gets intendedName (nameReq=$description) from partyInfo.
SetContents:
RepairIntelnet[OtherParty] used to get descriptions; then parenthetical information is removed.
RepairIntelnet:
Phone numbers included in partyInfo.name [$description] have been converted to the internal form needed to dial them (4-digit Centrex, zillion-digit Intelnet with embedded pause info, etc.). All punctuation has also been removed by this time. Assuming all numbers with pauses in them are Intelnet numbers, RepairIntelnet replaces the first pause specification with "*" and deletes everything beginning with the second pause. This makes the number semi-palatable to humans again. In particular, palatable to being supplied as input to subsequent commands. There's a bug in this, since it misses at least one digit of the auth code, as currently implemented.
FinchDirectoryImpl
CallByDescription[description, home or office]:
Uses first digit of description to determine whether it's a name or a number, using FeepValue to convert a number to all-digits-and-punctuation.
Uses FindNamedInstance to look up non-numeric descriptions in local tdirs, yielding an instance structure.
If an instance was found, uses CallNumber[instance, home or office] to issue the call.
Otherwise, presents argument (which must by now be an rName or number) directly to FinchSmarts.PlaceCall.
FindNamedInstance:
Searches all open directories (random order), searching each directory from front to back, for an entry whose rName component exactly matches the argument, or whose name component includes the argument as a substring. Returns the instance structure ([name, rName, numbers, attributes, office]) if found.
CallNumber[directory instance, home/office]
If office and there's an rName, FinchSmarts.PlaceCall[rName, number (in case rName doesn't work)]
Else FinchSmarts.PlaceCall[rName (descriptive only), number], forcing the use of the number.
If it succeeds in getting as far as attempting to place the call, does SetContents[name [at home]].
Directory buttons
extract instances from Directory, adding home/office based on mouse button.
Phone number handling procedures, In Thrush
LarkSmartsImpl:
CmdCall:
A number of the form indicated above for Etherphone touchpads has been collected.
GetPartiesForCall is used to get an associated Party. That's used to place the call.
GetPartiesForCall:
Determines from parsing state info whether it's a:
feepName => ThParty.GetPartyFromFeepNum,
number => ThParty.GetPartyFromNumber,
or error.
ThPartyInitImpl:
CmdCall:
A number of the form indicated above for Etherphone touchpads has been collected.
GetPartiesForCall is used to get an associated Party. That's used to place the call.
GetPartiesForCall:
Determines from parsing state info whether it's a:
feepName => ThParty.GetPartyFromFeepNum,
number => ThParty.GetPartyFromNumber,
or error.
Documentation needs
February 4, 1987 6:28:31 pm PST
VoiceUtils
Document the interfaces that are available in VoiceUtils. People might find many of them useful.
January 19, 1987 5:42:26 pm PST
All
Document recent database additions somewhere, like $multiring and $deferanswer.
June 26, 1986 9:33:49 am PDT
All
Document briefly the list of recent improvements.
April 28, 1986 1:18:55 pm PDT
DOC
Document new meanings for **7, **8, **9, *0name# => *name#, new monitor-mode stuff (hard).
November 26, 1985 4:31:13 pm PST
Thrush
Interface: Document meaning of ThParty.Enable carefully.
Important
July 19, 1987 9:09:12 pm PDT
Finch
Separate TDir command, to feed a once-only directory to Finch?
June 17, 1987 4:56:59 pm PDT
Bluejay
Recording a voice rope that is only silence doesn't seem to work, even yet. Doesn't stop when you tell it to, and subsequent requests don't work right, either. Or yields 0-chirp tune and 0-length voice rope. In addition, there's no good handling of the situation where the Jukebox is, or thinks it is, out of chirps. You just get a one or two chirp tune with the chirps missing.
June 18, 1987 7:23:40 pm PDT
Thrush/All
Should reorganize PartyInfo so that the non-conversation related stuff is first. Then change Describe Party to return a single PartyInfo record. The name and such is in there, along with other useful stuff; like the type and whether there's a voice connection.
June 18, 1987 7:24:28 pm PDT
Thrush/All
Think soon about various queries that might be applied by Finch to find out about things.
June 18, 1987 7:24:49 pm PDT
Finch/All
Find a way to register important public conversations, along with access lists and such. For meetings. Possibly add a telephone-driven user interface to start one, so that there needn't be a workstation in the commons; the index identifies a standard conversation name.
June 18, 1987 7:25:57 pm PDT
New
Consider finding some hack way to connect ARK to the Etherphone. Far blazing out!
June 12, 1987 2:56:39 pm PDT
Bluejay
7. Bluejay should time out $active with only one party in a manner similar to $trunk. Possibly $telephone should too, but that's less clear, due to hold and such.
June 9, 1987 3:22:20 pm PDT
Thrush
Do the initiating/notified thing for LarkTrunkSmarts, possibly BluejaySmarts.
Not clear anything is needed in FinchSmarts -- either the user can zap manually or roll back or it doesn't matter.
June 5, 1987 5:00:54 pm PDT
Thrush
LarkTrunkSmarts needs timeout protection in initiating and pending states (maybe just the former), similar to LarkSmartsSupImpl. Or maybe not. Wait and see.
February 10, 1987 8:36:59 am PST
Thrush
Add some simple statistics. # total calls, time started, # trunk calls, # service calls (by service?), # attempted/completed, current # calls in progress. Think about a (temporary) display indicating who they are?
January 19, 1987 5:43:15 pm PST
Thrush
Redesign decisions about when to cancel visiting. This can be deferred until after release, probably.
February 11, 1987 7:36:01 pm PST
All
There isn't a version-numbering strategy for any RPC interfaces except for the actual ThParty/ThSmarts ones. Probably should be.
November 26, 1985 4:09:21 pm PST
Thrush
P: showslower: no good methodology for killing and reregistering Bluejay parties -- automatically, anyhow.
April 21, 1986 3:40:20 pm PST
Thrush
Service larks (T-T-S, radio) are defenseless against back-door callers (except by not plugging in the back door, of course). There's no way to detect when the other party hung up. No dial-tone or click-detection, and anyway, in the case of the radio server, the hybrid bounce from one's own noise would drown out any ability to do it. Consider watchdog timer thing of some sort, not sure what, to deal with this. Should this be disallowed and prevented? Best thing to do is disallow connections from back doors to services? How about all the things people want to do about recording calls and the like?
November 26, 1985 4:09:21 pm PST
Thrush
Consider <conv>[<party>]=<convState> rather than <convState>[<conv>] = <party>; now all the parties and state to a conversation can be found by using the conversation as an attribute! The other searches are fast due to $Party attributes and so on. Sounds like a winner, but wait.
June 19, 1986 8:51:48 pm PDT
Thrush/Finch
Consider ThParty call that returns updated ConvEvent (self=other) to update state. Then stateMismatch can be upgraded in a loop. Consider NoteNewState change so it never does anything directly (never does, anyway, except during notification, which has to be the first we've heard of the event anyway. Can the WhatNeedsDoing stuff be pruned further?
September 29, 1986 9:02:58 am PDT
Thrush
Should be able to view dial tones, ringing, other locally-generated things in terms of (active) membership in conversations. To be $ringing in one converation, one is likely to be $active in a conversation with a "ringing service" party, which would then be implemented on one's own Etherphone. This makes B-V a more tractable thing, since this sort of thing is always happening. Getting things shut down is tricky. Finalization?
May 1, 1986 10:26:02 am PDT
Thrush
Toy with notion that Finch/Lark can both be parties in a conversation, one slave to the other while the other exists (willing to track state changes). Eliminates the last need for stateMismatch, I think. Or doesn't. Anyhow, makes things easier when dealing with multiple rings and conference behavior. Makes counting more difficult.
June 17, 1986 10:45:54 pm PDT
Lark
Think about having Zap clear out voice-related sockets somehow, to save on the number of necessary calls. Probably the non-zapping version was trying to save on calls. There can still be a 400A occasionally, when things go wrong. Rebooting will usually be OK in these situations, though.
November 16, 1986 5:52:44 pm PST
Thrush
D. Terry's suggestion that Finch depend from Lark, rather than the other way around. Then Finch could get in and out without zapping conversations or requiring as hairy a Substitution thing. Would change the name next time anybody looked, so should be notified somehow, but notification is important on various things anyway.
August 9, 1986 3:22:26 pm PDT
Thrush
Design methods for recording calls, playing back stuff to all/chosen parties. Needs flexibility, needed also for radio broadcasts and such, for one-way traffic on some links, dynamically determined.
June 28, 1986 10:37:22 am PDT
Thrush
Longer-term solution to the ringing-once-per-cycle problem: Callers who can't get through immediately should be able to persist: must be able to recognize rejection states from callees. Callees willing to allow calls to persist and even eventually succeed must enter states they can get out of. Maybe inactive is good enough? Callers, similarly, when they want to persist, must enter states they can later get out of. Error may work, except for the special treatment of notReallyInConv that might conflict. Now things like increasing the priority, if reported as events, could allow real-time alteration of the treatment of existing calls, and like that.
June 26, 1986 9:32:57 am PDT
Recorded voice
Doug or I has to decide how to use the ambient-level stuff, experiment with thressholds. It is now possible to set the silence threshhold for a Lark from Thrush, by the way.
January 30, 1987 1:58:25 pm PST
BluejaySmarts
Doesn't have the corresponding notion of Fail that Lark does. When $noSuchSomething comes up, it's not likely that the smarts will even clean up the conversation, let alone drop out and start a new one. This can probably be deferred; failed recording parties represent serious problems that should be found and fixed.
January 28, 1987 7:54:54 am PST
Thrush
nb and reason should be merged. Makes it harder to index things by reason, but could use a hash table for that.
December 23, 1986 3:37:38 pm PST
All
StateInConv -> ATOM, and find another way to do state comparisons when necessary. Allows more flexibility in assigning new states. Make sure there's a way to find all of the assigned values, though.
December 23, 1986 3:38:46 pm PST
All
Add $monitored state: like $inactive, but party doesn't really intend to come back -- wants to observe other transitions, though. Good for Agent stuff? Can come back as long as somebody's still in the conv., but should go away if everybody else is either $monitored or $idle.
December 23, 1986 3:48:46 pm PST
Thrush
Option: don't override volume control during ringing; for development.
December 23, 1986 3:49:01 pm PST
Thrush
Program control over ring volume, better than now. (Sliders?)
December 8, 1986 6:45:51 pm PST
Thrush
key distribution: not satisfied with how it's done -- the report when all reports done thing is a kludge. Should distribute keys, wait for input events (from larks) or equivalent, send in a complementary report which counts. Maybe the original report can contain a handle on the service that's updating the keys and one can communicate directly with it. Anyway, could then remove the hairy report stuff from Thrush.
August 14, 1986 11:23:03 pm PDT
Thrush
Need a way to register behaviors with LarkSmarts. Could be through additional smarts mech., but they're gone. In any case, things like call filters and so on should be handled that way. Prose specials, all that sort of thing. Too much is done in line. General registration mechanism. Extension of service registration? Don't know. Not an issue if Finch is supposed to do most of the hairy stuff.
March 14, 1986 6:59:43 am PST
VoiceRopes
Should Tune-archiving information be written into Tune headers, along with keys, voiceFileID's, creators?
March 2, 1986 11:43:27 am PST
VoiceRopes
If one records a long rope, one might want a way to checkpoint the partial results, or at least record the existence before it completes/shortly after it starts. Also, want unvoice-activated terminations ---- recordings that stop when the speaker stops for long enough.
March 2, 1986 11:44:04 am PST
VoiceRopes
Silence threshhold is something Bluejay could pay attention to on recording, independent of Lark choices.
February 22, 1986 3:48:57 pm PST
Thrush
Rework all the user profile values, combine where possible, use Intervoice prefix
February 4, 1986 8:37:38 am PST
VoiceRopes
LoganBerry calls from VoiceDB are not encrypted (!!)
January 27, 1986 7:03:14 pm PST
VoiceRopes
Walnut forwarding needs to have hooks allowing programs to run. For instance, the VoiceFileID's of the forwarded message need to be able to be substituted. We also need a way to recopy (forward assuming you're sending it again.)
December 18, 1985 12:04:27 pm PST
Thrush
I'm no longer convinced that queueing is needed in the Smarts at all. Probably one for the Lark keyboard, just to keep the characters flowing, but otherwise, now that conversation state is reported back for each call, it may not be necessary. Seems artificial every time I queue something. WaitForActive also has to do something like that, but a simple condition variable thing might well be good enough there; Progress is reported in its own process.
November 26, 1985 4:09:21 pm PST
Thrush
Make sure there are routines for setting conversation attributes (subject, urgency, ...) after initial creation.
November 26, 1985 4:09:21 pm PST
Thrush
Smarts: Don't really go idle (goingIdle is OK) until all prose reports have been made (at least an error one) and like that. Exception: when communications are down, still have to deal with that.
November 26, 1985 4:09:21 pm PST
Finch
Consider a way to get a busy test into Finch.
November 26, 1985 4:09:21 pm PST
All
Logging, statistics, performance measurement.
Some Day
July 20, 1987 4:43:43 pm PDT
LarkControl
Command tool operations in LarkRemoteControl to Reset (w/wout autoload), Load, Start Lark.
July 23, 1987 6:08:21 pm PDT
Thrush
All Finch-required interfaces should have Courier equivalents.
July 20, 1987 5:06:33 pm PDT
Finch
Beep or something to announce an intercom (autoanswer) call?
July 19, 1987 9:06:11 pm PDT
Thrush
Set "ApplicationState" in LarkControl at Party-to-LarkSmarts checkin time. Should only repost when things have really changed, though. Should also find a way to post unknown state when a timeout has occurred, and that's hard.
June 6, 1987 6:37:09 pm PDT
Thrush
Report Limits exceeded happens at times when we're reporting debugging stuff intentionally, and it shouldn't. Somehow it should be makeable bigger at times. Look at it again sometime. For now, just go in and reset the enabled value by hand in VoiceUtilsImpl.pd.
May 15, 1987 5:51:05 pm PDT
Thrush
DBInfo, or maybe something at the LoganBerry level, should operate at least a one-element cache at the entry level.
December 18, 1985 11:47:13 am PST
(optional) All progress report (pd.reports) output has been removed from both Thrush and Finch. Consider what's needed when thinking about statistics gathering, logging, error management.
January 11, 1987 2:57:09 pm PST
Thrush
Lark buffer connections now complicated enough that a differential approach is the desirable way to avoid unnecessary break/make sequences. Just the way hardware switching is done now.
December 22, 1986 1:49:02 pm PST
Thrush
Suppose Party A alerts parties B and C, each of which have the same voice party. This is a case with the same problems as the narcissism case. Can it arise?
December 18, 1985 11:52:35 am PST
Thrush
Think about whether a common set of smarts implementations at some level would make sense.
December 8, 1985 4:51:20 pm PST
Thrush
Humph. At the smarts level, larkInfo knows about both smartses, so one could get associated parties that way when calling? Think it through; the redundancy of how trunks and telephones are found feels funny.
August 12, 1986 6:13:17 pm PDT
All
Idea: many smartses seem to need (1) notification when something happens and sometimes (2) a way to wake up once in a while even if something hasn't happened (most recent example: ringing for only a while after somebody else has answered, and in fact somebody else might have answered first. Can we do anything at ThParty level to regularize this? Notify in time t would be fairly easy (all or just me!). Would be nice to have some value that would travel across and back without damage, so that the notification could include, for example, a call-back proc!!!!! See, the trouble with waiting for some event is the standard problem with waiting for two kinds -- user input and the other kind. Could we just do smarts behaviors all by Progress events? So that all smarts actions are defined by stream of such things. Like lists of ref any or something? Then with the timeout, we've got something manageable, sort of. What is then the relationship of this to what WS clients of smarts do? Have to think this out. In meantime, just do something.
April 30, 1986 11:42:07 am PDT
Why does the intelnet-converted number show up anyway? Why doesn't that happen far enough downstream that nobody but the operating units see it? Probably so that the conversions from 6xxx to 9496xxx and so on will work.
April 21, 1986 3:40:20 pm PST
Thrush
Pity DTMF detectors also don't do dial tones, busy tones, and the like. Maybe some do.
March 28, 1986 2:11:05 pm PST
Finch, Thrush, VoiceDB, and the ideas therein could be used in other domains. Here are some examples of what I'm talking about:
Finch: could support talker. Or at least a simple "send this string to this other Finch user" function. For use when you don't want to intrude, but do want rapid transmission. The phone could beep, if that bit could be got right.
Could do the same with short recorded messages. They wouldn't be kept or have anything to do with GV. Only if the other party's got VoiceDB stuff running kind of thing.
Could annotate documents with synthesized voice or just with other structured text.
Could support refs in documents to unnamed but large and slow-changing things other than voice. Like figures for a paper, which are replicated in each version.
And so on.
February 23, 1986 1:49:37 pm PST
What would it take to make BD all analog again?
February 23, 1986 1:49:54 pm PST
"who is talking" feature during teleconference, other high-performance stuff based on voice content; how to control? Control over who is talking, meets Stodolski's requirements.
December 23, 1985 1:37:37 pm PST
(optional) PartyInfo called in FinchSmarts uses nameReq: $description to get most human-sensible description. Then FinchToolImpl.ReportConversationState has to strip off extraneous stuff for calling/called party fields. nameReq: $current would usually be a better approach, but that would mean calling PartyInfo twice or convincing it to supply two ropes sometimes or something. Worth thinking about; still not there yet on what Smartses need to know.
December 3, 1985 2:36:37 pm PST
There's a problem with multicasting: once a lark is listening on a multicasting port, it can't be reached unless the multicast forwarder stays accurate. Over a server or forwarder crash, this isn't guaranteed. Polle points out that one approach is to use stable storage to record the current state of forwarding, being careful about synchronization. The multicast-forwarder would be responsible for keeping the state of multicasting tracking that of the stable storage representation. There would be a reset function that would communicate with each Lark, setting it back to normal, and clearing the related entries. For now, will be as careful as possible in the server code and hope for the best during conferences.
November 26, 1985 4:09:21 pm PST
Reason, comment should be part of credentials? Seems to need to be replicated, too. Sigh.
November 26, 1985 4:09:21 pm PST
Make stateInConv an ATOM, change tables into refTabs or refTabs of refTabs, stored in separate source files, registered to ATOMs (can change them on the fly). Use phone number mappings as model. Still haven't found a reasonable way to do this.
November 26, 1985 4:09:21 pm PST
Determine degree of authentication possible for each type of registrant. Add data structures necessary to reflect authenticated/not. Use RPC-provided information where possible to be sure of authentication.
November 26, 1985 4:09:21 pm PST
In any session, authentication of a GVNames cache password should be renewed by client call supplying password. Present interface can handle it, but it's not presently done.