XMPP Instant Messaging - Group Rosters: Difference between revisions
No edit summary |
No edit summary |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
As of ZCS 6.0, it's not possible to create group rosters (where the IM Buddy List is pre-populated with all the members of a group) through the admin web interface. This functionality is slated for ZCS 7.0. However, it is possible to do so via the IM SOAP API. The following bash script, which should be run from the CLI as the zimbra user, will reciprocally add all members of a Distribution List (defined in the admin web interface). It's not elegant, but it works. | {{Archive}}{{Unsupported}}{{Article Infobox|{{admin}}|{{ZCS 6.0}}||}}NOTE: I have tested this on 6.0.6GA. The 'zimbraPrefFromDisplay' attribute was not present in the output of the 'zmmailbox' command, so instead I used the 'username' part of the email address the display name. Not ideal, but it works. - switch007 | ||
As of ZCS 6.0, it's not possible to create group rosters (where the IM Buddy List is pre-populated with all the members of a group) through the admin web interface. This functionality is slated for ZCS 7.0. However, it is possible to do so via the IM SOAP API. | |||
The following bash script, which should be run from the CLI as the zimbra user, will reciprocally add all members of a Distribution List (defined in the admin web interface). It's not elegant, but it works. | |||
<pre> | <pre> | ||
Line 6: | Line 10: | ||
if [ "$#" == "1" ] | if [ "$#" == "1" ] | ||
then | then | ||
members=$(zmsoap --type admin --verbose --zadmin \ | members=$(zmsoap --type admin --verbose --zadmin \ | ||
GetDistributionListRequest/dl="$1" @by="name" | \ | GetDistributionListRequest/dl="$1" @by="name" | \ | ||
grep dlm | sed -e 's/.*<dlm>\(.*\)<\/dlm>/\1/g') | grep dlm | sed -e 's/.*<dlm>\(.*\)<\/dlm>/\1/g') | ||
for member in $members | for member in $members | ||
do | do | ||
for target in $members | |||
do | do | ||
zmsoap --type im --verbose --zadmin \ | if [ $member != $target ] | ||
then | |||
username=$(echo $target|cut -d@ -f1) | |||
zmsoap --type im --verbose --zadmin \ | |||
--mailbox $member IMSubscribeRequest \ | |||
@addr=$target @name="$username" @op="add" | |||
zmsoap --type im --verbose --zadmin \ | |||
--mailbox $target IMAuthorizeSubscribeRequest \ | |||
@addr=$member @authorized="true" | |||
fi | |||
done | |||
done | done | ||
Line 29: | Line 35: | ||
fi | fi | ||
</pre> | </pre> | ||
{{Article Footer|ZCS 6.0|1/15/1010}} | |||
[[Category:Administration]] | |||
[[Category:IM]] | |||
[[Category:SOAP]] | |||
[[Category:ZCS 6.0]] |
Revision as of 17:38, 24 March 2015
Article Information |
---|
This article applies to the following ZCS versions. |
NOTE: I have tested this on 6.0.6GA. The 'zimbraPrefFromDisplay' attribute was not present in the output of the 'zmmailbox' command, so instead I used the 'username' part of the email address the display name. Not ideal, but it works. - switch007
As of ZCS 6.0, it's not possible to create group rosters (where the IM Buddy List is pre-populated with all the members of a group) through the admin web interface. This functionality is slated for ZCS 7.0. However, it is possible to do so via the IM SOAP API.
The following bash script, which should be run from the CLI as the zimbra user, will reciprocally add all members of a Distribution List (defined in the admin web interface). It's not elegant, but it works.
#!/bin/bash if [ "$#" == "1" ] then members=$(zmsoap --type admin --verbose --zadmin \ GetDistributionListRequest/dl="$1" @by="name" | \ grep dlm | sed -e 's/.*<dlm>\(.*\)<\/dlm>/\1/g') for member in $members do for target in $members do if [ $member != $target ] then username=$(echo $target|cut -d@ -f1) zmsoap --type im --verbose --zadmin \ --mailbox $member IMSubscribeRequest \ @addr=$target @name="$username" @op="add" zmsoap --type im --verbose --zadmin \ --mailbox $target IMAuthorizeSubscribeRequest \ @addr=$member @authorized="true" fi done done else echo "$0 usage: $0 group@zimbra.domain.edu" fi