We use cookies to improve your experience.
By your continued use of this site you accept such use.
For more details please see our privacy policy and cookies policy.

Script repository

Send SMS message to group members

November 04, 2021 Views: 908

The script sends an SMS message to all users and contacts that are members of a group and of the first level nested groups. To execute the script, create a custom command, business rule or scheduled task configured for the Group object type.

Parameters:

  • $mobilePhonePropertyName - Specifies the LDAP name of the property used to store mobile phones. Should be the same as the property specified in SMS settings.
  • $smsText - Specifies the text of the SMS message.
Edit Remove
PowerShell
$mobilePhonePropertyName = "mobile" # TODO: modify me
$smsText = "my text"  # TODO: modify me

# Get group members
try
{
    $memberGuidsBytes = $Context.TargetObject.GetEx("adm-DirectMembersGuid")
}
catch
{
    $Context.LogMessage("The group has no members.", "Information")
}

$alreadyProcessedGuids = New-Object System.Collections.Generic.HashSet[System.Guid]
foreach ($guidBytes in $memberGuidsBytes)
{
    $guid = [Guid]$guidBytes
    $member = $Context.BindToObject("Adaxes://<GUID=$guid>")
    
    if(($member.Class -eq "user") -or ($member.Class -eq "contact"))
    {
        # Check if mobile phone is specified
        try
        {
            $mobileNumber = $member.Get($mobilePhonePropertyName)
        }
        catch
        {
            continue
        }
        
        [void]$alreadyProcessedGuids.Add($guid)
        $member.SendSMS($smsText, $False)
    }
    elseif($member.Class -eq "group")
    {
        # Get group members
        try
        {
            $nestedMemberGuidsBytes = $member.GetEx("adm-DirectMembersGuid")
        }
        catch
        {
            continue
        }
        
        foreach ($nestedMemberGuidBytes in $nestedMemberGuidsBytes)
        {
            $guid = [Guid]$nestedMemberGuidBytes
            if ($alreadyProcessedGuids.Contains($guid))
            {
                continue
            }
            
            $nestedMember = $Context.BindToObject("Adaxes://<GUID=$guid>")
            if(($nestedMember.Class -eq "user") -or ($nestedMember.Class -eq "contact"))
            {
                # Check if mobile phone is specified
                try
                {
                    $nestedMobileNumber = $nestedMember.Get($mobilePhonePropertyName)
                }
                catch
                {
                    continue
                }
                $nestedMember.SendSMS($smsText, $False)
            }
        }
    }
}
Comments 0
Leave a comment
Loading...

Got questions?

Support Questions & Answers