Personal Assistant

Overview

Personal Assistant is a new sipXecs application that leverages sipXivr and Openfire integration. Its goal is to give sipXecs users additional control over their communications. It is especially useful for those who are mobile and use a smartphone with an XMPP client. The Personal Assistant will be delivered over at least two phases. Phase one will focus exclusively on an Instant Messaging (IM) interface for controlling and managing voice communications.

The functionality relating to voice mail and MeetMe conferencing does NOT apply (work) if using an external voicemail system such as Microsoft Exchange or an external conferencing system such as Nortel MultiMedia Conferencing.

Demonstration Video

eZuce branded demo of sipXecs MyBuddy.


Click a heading to jump to that section on this page.

Features in Initial Release

Instant Messaging (XMPP) interface:

  • Instant Message notification that will indicate when a person has started to leave a voice message and when that person has finished leaving a voice message.
  • Instant Message notification for conference entry/exit
  • command based conference administration:
    • mute/un-mute/disconnect/lock/unlock/list
  • Call initiation
  • Search phone book
  • Call History
  • Listen in as a person leaves a voice message
  • Retrieve call from voice mail

These features are described in more detail with user scenarios below. Since the notification and commands are done via XMPP, any standard XMPP client can be used. This includes mobile clients on devices like Apple iPhone, Palm Pre, Blackberry, Counterpath Bria Professional, etc... This is work in progress: Personal Assistant is not scheduled to be released with any sipXecs release yet. The diagram below for a basic call flow of call screening.

User setup

When a sipXecs user is added via sipXconfig a corresponding XMPP OpenFire account is optionally provisioned. In addition, the user can provision an alternate IM id that corresponds to a public XMPP system such as GoogleTalk. If the OpenFire account is provisioned then by default MyAssistant@<domain> will be automatically added to the user's roster. To use MyAssistant from the alternate IM id, the user explicitly adds MyAssistant@<domain> after logging into the alternate IM id account from a public client such as GoogleTalk. To use the Personal Assistant ensure that the Use Instant Messaging Commands is checked in the user portal (see Management section for more details). Once included in the user's roster, the Personal Assistant will:

  • optionally send asynchronous IMs (eg. voicemail call answering sessions IMs and MeetMe conferencing IMs)
  • Accept and act upon IM commands from the user

Within sipXconfig, an alternate IM account can be defined for a user (eg. a googletalk account: blob@gmail.com). The user can login to googletalk and similarly add MyAssistant@<domain> to his/her googletalk roster. Once added, the personal assistant will

  • optionally send asynchronous IMs (eg. eg. voicemail call answering sessions IMs and MeetMe conferencing IMs) to the alternate IM account.
  • Accept and act upon IM commands from the user when he/she is using this account.

The Personal Assistant will reject any roster subscription from an XMPP account not associated with some sipXecs user. If a SipXecs user is deleted from the system, that user's XMPP Id(s) are removed from the Personal Assistant's roster. At any time, a user can use the IM client to remove the Personal Assistant from his/her roster at which point the Personal Assistant will stop interacting with the user via IMs. The user can do this from the OpenFire XMPP account and/or the alternate XMPP account.

Asynchronous IMs

The PA will send four different asynchronous IMs to the user:

  • A participant has entered one of the user's conference bridges. IM includes participant name/number, time/date of entry and a participant number. This number would be with the mute, un-mute and disconnect commands
  • A participant has left one of the user's conference bridges. IM includes participant name/number, time/date of entry and a participant number.
  • A caller is leaving a voice message in the user's voice mailbox. IM includes the caller's name/number. This IM is useful in conjunction with the listen and pickup command described below.
  • Caller has finished leaving a voice message (or hung up while listening to the user's greeting).

IM Commands and Use Cases

All IM commands are case insensitive. Short forms are allowed if enough letters are entered to make the command unambiguous (eg. one can enter help, hel, he or h to get help).
Help

  • The Personal assistant responds to a list of commands and command examples. The user is instructed to use help as the XMPP status message for MyAssistant@<domain> is always set to "For a list of commands, enter help."

Find <name>

  • The use case here is a mobile user wants to look up the number for a person in his phonebook(s). The user enters "find Joe" and the PA returns the list of phonebook entries that prefix matches (by first or last name). For each entry that corresponds to a sipX user the user's presence and status information is also provided (if available). One reason why it may not be available is if the user in question has removed that Personal Assistant from its roster (if it was even added to start with).

Call <number of name> <from | on> <cell | home | number>

  • This command works analogously to the click to call functionality in the user portal. The high runner use case is as follows: user is in his car and wishes to call a long distance number using his smartphone but wants to avoid cellular long distance charges. User clicks on MyAssistant in the IM client roster list and enters
    • Call 96131231234 from cell
  • sipXecs then calls the user at his cell number (instead of obeying the call forwarding rules).
  • The user answers the call then the call is referred to *99131231234* at which point the user will hear ringback. If a from "place" is not specified then the PA will respond with "From where? Enter cell, home or a phone number." At which point the user would respond with cell, home or a phone number. The words*From* or On (or any prefix strings of either) are optional. Of course any prefix strings of cell or home are legal so the command c 201 c is legal (call 201 from cell).
  • Call Permissions are enforced. If the user cannot call Hong Kong from his desk phone then the call command will not make a call to Hong Kong either.
  • If the first argument to the Call command is a name then the find command is used to resolve the name to a number: if the find command returns exactly one match then that number is called.
  • The call command is of significant user value for European users where incoming calls are free or North American cellular users who have an cellular add-on package that provides unlimited incoming call minutes. It also provides value in that the user can avoid cellular long distance charges.

Missed <n>

  • Examples of this command are:
    • Missed
    • Missed 3
  • The Missed command returns the missed calls for the last <n> days. If <n> is not provided then the <n> defaults to 1 (ie today's missed calls). A missed call is a call presented to the user's URI that was abandoned by the caller or was forwarded to voicemail or the Personal Attendant. The resulting call list includes the caller's name/number and the time/date of the call. The calls are presented in most recent first order.
  • A typical user scenario is as follows: user just finished making an hour one customer presentation and wants to quickly see his missed calls. He enters Missed and sees that an important client called in the last hour but did not leave a message (doesn't see any new voicemails via his wireless email client). User elects to call the client back using the call command (since the call long distance).

History <n>

  • Examples of this command are:
    • History
    • History 3
  • The History command returns all inbound calls for the last <n> days. If <n> is not provided then the <n> defaults to 1 (ie today's missed calls). The resulting call list includes the caller's name/number and the time/date of the call. The calls are presented in most recent first order.

Who

  • Lists the participant in the user's conference. If no conference is active then the PA responds with "Your conference is not active". For each participant, name/number and participant number is provided. The list includes the conference owner himself.

Mute <n>

  • Mutes participant <n>. Participant will hear a voice prompt indicating he has been muted. The participant specified can be the conference owner. Ie. The user can mute himself.

Unmute <n>

  • Un-mutes participant <n>. Participant will hear a voice prompt indicating he has been un-muted. The conference owner can use this command to unmute himself.

Lock

  • Locks the conference such that no new participants can join the conference.

Unlock

  • Unlocks the conference such that new participants can join.

Listen

  • The listen command allows a user to listen in on a caller leaving a voice message in the caller's mailbox. If no one is leaving a message then the PA responds with "No one is leaving you a message." Otherwise calls the user using the same algorithm used by the Call and At commands and, upon answering, connects the user to the call answering session in a listen only mode. If the caller hangs up then the user is also disconnected.
  • The user scenario is as follows:
    • User get an IM notification from the PA that "John Doe" is leaving a voice message.
    • User wants to listen in and enters "Listen".
    • User's phone rings and he answers.
    • User is connected to call answering session in a listen only mode.
    • User can disconnect at any time or will be disconnected when the call answering session ends.

Pickup

  • The pickup command allows a user to retrieve a caller who is leaving a message for the user. If no one is leaving a message then the PA responds with "No one is leaving you a message." Otherwise the PA instructs the call answering IVR session to transfer the caller to the user based on the same algorithm the Call and At command use to call the user. If a message was in the process of being recorded that message is delivered. The person leaving the message will hear "transferring your call" followed by ring back until the user answers the call.
  • The user scenario is as follows:
    • User get an IM notification from the PA that "John Doe" is leaving a voice message.
    • Since the user wants to talk to John, he enters the pick command.
    • John hears "transferring your call".
    • Users smart phone rings based on At command or call forwarding rules.
    • User answers and can talk with John
  • If the user does not answer the call (perhaps forgot to use the At command and smartphone is not reflected in the call forwarding rules) then John will hear ring back then be transferred to voicemail (for the second time!). User will see another '"John Doe" is leaving a voice message' IM, can enter "at cell" followed by "pickup" then apologize to John.
  • If multiple callers are leaving messages in the user's mailbox at the same time the last call to be connected to the mailbox is the call that the Listen and Pickup commands act upon.

Management

For Phase 1 the following Administrator and User portal changes are required: Personal Assistant assumes that Instant Messaging role is enabled in sipXconfig (Openfire service is configured and active).

  • Users have ability to turn Personal Assistant on/off. This is accomplished via a checkbox on the User Portal page (Use Instant Messaging Commands)

    NOT SURE WHERE EXACTLY THIS WOULD GO .. CAN'T FIND A LOGICAL PLACE ON AN EXISTING PAGE

    By default it is checked. If checked the MyAssisant XMPP Id will be automatically included in the user's OpenFire roster. If unchecked, the account is not added to the roster in the future (eg. on server restarts) but the user is responsible for removing the stale entry from his/her roster. If the user checks any of the four asynchronous IM checkboxes described below then sipXconfig will automatically check the "Use Instant Messaging Commands". One exception to these rules is as follows: if the user has no XMPP IDs defined (primary or alternate) then no checkboxes described in this section are displayed to the user and the personal assistant will not send any asychrononous IMs (since there is no account to send them to).
  • SipXconfig will define a "MyAssistant" OpenFire XMPP account and password. The administrator cannot change the name of this XMPP account but the name is localize-able and will be stored in an xml config file.
  • In the user portal, the user can specify the dialing prefix that the Personal Assistant will use to make calls via the call command. More specifically, this prefix will be added to the beginning of the home and work phone numbers prior to dialing. It will also be used when calling by name and the single entity returned by the find command does not correspond to a sipX users. By default this prefix is blank.
  • In the user portal, at the top of the "My Information" page that shows the table of the user's conference bridges, there will be two new check boxes: "Send Instant Messages as participants arrive" and "Send Instant Messages as participants depart". By default these check boxes are checked. These check boxes control whether the Personal Assistant will send Instant Messages corresponding to these events. If one or both are changed (to be checked) but the "Use Instant Messaging Commands" check box is unchecked the user is presented with an appropriate warning.
  • In the user portal My Information Voicemail page there will be two new check boxes: "Send Instant Message when a caller begins a call answering session" and "Send an Instant Message when a caller finishes a call answering session". By default these two check boxes are unchecked. These check boxes control whether the Personal Assistant will send Instant Messages corresponding to these events. If one or both are changed (to be checked) but the "Use Instant Messaging Commands" check box is unchecked the user is presented with an appropriate warning. Note: a caller finishing a call answering session does NOT imply the caller left a message: he/she may have disconnected while listening to the greeting.

Future Content

For future content click here.

Comments from Previous Proposal

Comments and Suggestions

  1. PA should have four different states:
    1. Off: Calls flow normally following find-me / follow-me and not using the PA
    2. On: Calls are answered by the PA and the user is paged while the caller hears hold music
    3. Notify: The PA does not answer the call, but still notifies the user via IM about who is calling. If call goes to VM user can use PA to listen in or retrieve
    4. Attendant: The call first rings the user and PA picks up instead of the voicemail system. Similar to the current personal attendant.
  2. PA should announce the caller. Caller is asked to record name. Name is played to user to identify the caller. Recorded name is stored and associated with the incoming Caller ID
  3. PA should offer different call treatment based on incoming Caller ID. PA should offer user definable groups to group Caller ID. Options for call treatment should include black lists (e.g. hang-up or play a prompt and hang-up)
  4. When the PA pages the user after having received a call, normal find-me / follow-me rules should be followed. Not sure why we need a command like 'at cell until 3pm' assuming the cell phone is already part of the user's find-me / follow-me chain
  5. When a caller starts or stops a voicemail recording session, the user should be notified by IM. This way the user will know when he/she can use the 'listen' or 'pickup' commands
  6. How is the 'status' of a user in the PA different from the presence state of a user? Given that we have dynamic presence based call routing, why would we need yet another concept called 'status'?
  7. There currently is a personal attendant that front-ends a user's voicemail box. How would that personal attendant relate to the PA? Should the options presented to the caller be identical to those selected for the personal attendant? In that way the PA would become an enhancement to the current personal attendant.
  8. The user of the PA should be able to personalize the greeting played to callers. The greeting could be different based on what Caller ID is presented.
  9. An option would be nice to hand-off a call to a different device while in a call. Something like a 'ring' command that would ring all the user's devices again so that the call can be picked-up on a different device
  10. Would it be possible during a conference call to invite an additional participant via IM?
  11. Should the PA offer a command for voicemail retrieval? E.g. type 'vm' and the PA calls me and connects me to my inbox.