<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
I've added some functionality to the Manager.&nbsp; Specifically, I've added
the ability to send AGI commands via the Manager API so there's a
single TCP socket open between Asterisk and a controlling application.&nbsp;
It works really well.<br>
<br>
One of the things that the MAGI (Manager/AGI) code does is URL Encode
complex responses.&nbsp; If I've got a compound response (e.g., a response
that itself contains another response), I URL encode the contained
response and put it on a line.&nbsp; The controlling application looks for
the line it cares about, and URL Decodes the line.<br>
<br>
In the example below, you might have something like:<br>
<br>
QueueMember0: name=value&amp;name2=value2&amp;name3=value3<br>
QueueMember1: name=value&amp;name2=value2&amp;name3=value3<br>
<br>
This also allows sending non-printables (e.g., a tab, a space, etc.) in
a well defined way.<br>
<br>
Sound like it might address some of the needs?<br>
<br>
Stefan Reuter wrote:
<blockquote
 cite="mid1112446573.13893.14.camel@endorsed.cologne.reucon.net"
 type="cite">
  <pre wrap="">On Sat, 2005-04-02 at 13:06 +0200, Peter Svensson wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">The separate events used at the moment breaks the command-response 
pattern. I would prefer of the events mechanism was used only for 
unsolicited events.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
+1

Following a strict command-response pattern would help a lot with
handling these actions.
We should have a consistent idea of how these responses look like and
allow easy mapping to objects.
The index you proposed seems like a good starting point. Maybe we can
also add support for different kinds of records (or objects or whatever
you want to call them) returned. I think of the reponses like the one to
the QueueStatus action, that contains QueusMembers, QueueParams and
QueueEntries.
Currently this is handled by different types of Event that are created
in response to the action.

A possible syntax for this:

  Result: Success
  QueueMember[0].Queue: mainq
  QueueMember[0].Location: Agent/@1
  QueueEntry[0].Queue: mainq
  QueueEntry[0].Position: 1
  QueueEntry[0].Channel: SIP/1310-a18a
  QueueEntry[1].Queue: mainq
  QueueEntry[1].Position: 2
  QueueEntry[1].Channel: SIP/1311-abcd

=Stefan

_______________________________________________
Asterisk-Dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Asterisk-Dev@lists.digium.com">Asterisk-Dev@lists.digium.com</a>
<a class="moz-txt-link-freetext" href="http://lists.digium.com/mailman/listinfo/asterisk-dev">http://lists.digium.com/mailman/listinfo/asterisk-dev</a>
To UNSUBSCRIBE or update options visit:
   <a class="moz-txt-link-freetext" href="http://lists.digium.com/mailman/listinfo/asterisk-dev">http://lists.digium.com/mailman/listinfo/asterisk-dev</a>
  </pre>
</blockquote>
</body>
</html>