Title: Akibot Use Case
{section}
{column:width=70%}
## Use case
_(Taken from esme-dev mailing list: still needs to be confirmed)_
1. One of the Purchasing employees posted this in the Purchasing
micro-blog group: "@victoria I just ordered 3,000 more G70" (G70 is an item
"Kidco fireplace gate"). to let his boss know that he ordered what they
discussed some days ago.
1. Akibot picked up the conversation and understood that 3,000 G70
were ordered (through the contextual analyzer
1. Akibot inquired the purchasing history for G70 (through an ERP feed) and
noticed that this was an unusual quantity (through the directive processor)
1. Akibot then called up another application that inquiries the price for
G70 in Amazon and other online retailers (through the directive processor
as well)
1. Akibot found that Toys'r'us is selling G70 cheaper (through the directive
processor as well)
1. Since Purchasing just ordered more G70, and competitors are selling it
cheaper, there will be a problem\!
1. Akibot posts back a message alerting the Sales group: "Purchasing
just ordered 3,000 more G70. We're selling it at $194.99, the competition
at $184.99 (Toysrus)"
1. Sales will contact Purchasing, and either they lower the price or cancel
the purchase order
This "reasoning" that Akibot has, is through directives. This use case
above is one directive. Akibot comes with standard directives and you can
add custom directives ("teach" him). These directives can be shared by
other companies using Akibot, so the more companies use Akibot, the more
Akibot learns...
## Technical Description
## !akibot_esme.jpg|thumbnail!
1. Messages are post in ESME
1. ESME sends message to Akibot via HTTP POST
1. Akibot acknowledges the message reception by responding the HTTP POST
call with an XML response
1. Akibot store the message and processes it through its Contextual Analyzer
(C>A) module
1. If necessary, Akibot makes inquiries the corresponding enterprise (ERP or
Groupware) application via HTTP REQUEST
1. The enterprise application processes the inquiry
1. The enterprise application responds to the inquiry with an XML response
1. Akibot processes the enterprise application response with its Directive
Processor (DP), which decides if any action is to be taken
1. If Akibot decides that an action needs to be taken (for now, just sending
back a message to the microblog) it does so by sending the message via HTTP
POST call to ESME
1. (Optional) ESME can send back an acknowledge to Akibot letting it know
that the message was successfully received
{column}
{column:width=30%}
### Iterations
1. Use existing akibot infrastructure and attempt to use ESME's action
mechanism to post to akibot's REST API
1. Start changing akibot infrastructure (contextual analyzer, etc) to be
more ESME-specific
### Questions
1. What sort of back-end system are we talking about? Are you already using
a system that we can re-use for initial tests?
1. We also have to agree on what sort of message contents (formats, etc.)
will be used Are there special words (invoice, etc.) that are necessary.
This is, of course, linked to what sort of back-end you guys are using.
1. What sort of rules are present in the DP? The obvious one would be to
create an ESME message.
1. Regarding 10, we do respond with a XML response to those submitting
messages via REST API
1. Do you want to use the old REST API or the new "Streaming API" (Ethan's
baby :->)?
1. We just probably use a POST action as Ethan suggests as a first step
1. You are right about the messaging threads needing standardization
(especially 2 and 9). Maybe you can look at my table in the wiki page and
tell me about what the parameters mean and whether they are optional or
not. We will have to map them to our fields.
1. We also have to think about user-ids. Do they need to be synchronized?
Probably....
Column two text goes here
{column}
{section}