Sometimes it is needed to solve problems with presence related stuff... ;-)
AVPs might not work properly with presence. If you create AVPs they can disappear after call to handle_subscription or similar function. The reason is that from such functions is created new transaction (sent a NOTIFY request) and AVPs are not returned correctly to previous one.
There are some standard incompliances in presence modules, often caused by standard ambiguity or contradiction or by partial implementation only. Please refer to specific module documentation in such situations.
SIP clients often use broken data, not corresponding with data format specification. Look into specification in such cases (for example [pidf]).
If you can not find the source of your problem or if you are not sure how to do this or that, you can:
Try to search for similar problem in mailing lists on iptel's page or in list archives.
Send and email to serusers@lists.iptel.org for user related problem or serdev@lists.iptel.org for development related things. There are lots of interesting people on these lists with lots of experiences with SIP related stuff ;-).
For presence-only related things you can send me an email directly to vaclav.kubart@iptel.org, but I highly prefer to use one of mailing lists above because many people may be interested in the same problem you have.
If you find a bug, please report it to our bug tracker or send an email to lists mentioned above or directly to me (email above).
There is a list of features to be implemented in my TODO list. I will put them into our bug tracker as soon as I will have more time for it. ;-)
If you are interested in a feature you can search or ask in mailing lists or you can add your feature into bug tracker and might be that it will be implemented or at least discussed.
Most of presence modules have “trace” method which can be invoked through SER's XML-RPC interface. Such method often dumps current status, existing subscriptions etc.
For calling XML-RPC methods you can simply use set of ser_ctl utilities (don't mess with deprecated serctl utility which is from unknown reason still installed with SER) or binrpc which uses more effective binary protocol.
Example 1. Using ser_ctl for debugging problems
kubartv@~/src/serctl$ ./ser_rpc -t pa.trace 2
+------------------------------------------------------------------------------------------------------------------------+
| value |
+------------------------------------------------------------------------------------------------------------------------+
| registrar |
| * sip:parf@test-domain.com (uid=parf) |
| - tuples: |
| 6574y1y45d334fay6e9d7c60 contact='sip:parf@10.38.2.19:6198;transport=udp' exp=976014034 status=0 published=0 (id=) |
| notes: |
| extension elements: |
| status extension elements: |
| |
| - watchers: |
| - winfo watchers: |
| sip:parf@test-domain.com status=1 exp=3545 |
| - internal watchers: |
| - notes: |
| - extension elements: |
| * sip:gozner@test-domain.com (uid=gozner) |
| - tuples: |
| - watchers: |
| sip:parf@test-domain.com status=1 exp=3562 |
| - winfo watchers: |
| - internal watchers: |
| - notes: |
| - extension elements: |
| presentity count: 2 |
+------------------------------------------------------------------------------------------------------------------------+