← Back to Skills Marketplace
sdk-team

Alibabacloud Sms Send Short Message

by alibabacloud-skills-team · GitHub ↗ · v0.0.1 · MIT-0
cross-platform ⚠ suspicious
41
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install alibabacloud-sms-send-short-message
Description
Send short messages (SMS) to specified phone numbers via Alibaba Cloud Short Message Service. Supports verification codes, notification messages, and marketi...
README (SKILL.md)

Critical CLI Compliance (Must Read First)

The following declarations apply to every aliyun CLI invocation in this Skill — they must be honored before any send / query operation, workflow step, or functional scenario described later in this document.

Pre-check: Aliyun CLI >= 3.3.3 required

Run aliyun version to verify the version is >= 3.3.3. If not installed or the version is too low, run curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash to install or update.

Pre-check: Aliyun CLI plugin update required

[MUST] run aliyun configure set --auto-plugin-install true to enable automatic plugin installation. [MUST] run aliyun plugin update to ensure that any existing plugins on your local machine are always up-to-date.

[MUST] Enable AI-Mode — AI-mode is required for Agent Skill execution. Run the following commands before any CLI invocation:

aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message"

[MUST] Disable AI-Mode at EVERY exit point — Before delivering the final response for ANY reason, always disable AI-mode first. This applies to ALL exit paths: workflow success, workflow failure, error/exception, user cancellation, session end, or any other scenario where no further CLI commands will be executed. AI-mode is only used for Agent Skill invocation scenarios and MUST NOT remain enabled after the skill stops running.

aliyun configure ai-mode disable

[MUST] CLI User-Agent — Every aliyun CLI command invocation in this Skill must include the flag: --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message


Overview

This Skill wraps the Alibaba Cloud Short Message Service (SMS) end-to-end on top of the aliyun CLI, exposing the following capabilities:

  • Send SMS: verification codes, notifications, or marketing messages (SendSms).
  • Batch send: different signatures / template params per phone number (SendBatchSms).
  • Signature management: query approval status and signature lists.
  • Template management: query approval status and template lists.
  • Send status query: query SMS send details and delivery receipts.
  • Send statistics query: aggregated send / success / fail counts in a date range (QuerySendStatistics).
  • SMS qualification query: list records (QuerySmsQualificationRecord) and single-record detail (QuerySingleSmsQualification) — see references/sms-qualification.md.

Interactive Parameter Confirmation (Must Read)

Before executing any send-class operation (send-sms / send-batch-sms), this Skill must collect these critical parameters first:

  • --sign-name (signature name)
  • --template-code (template code)
  • --template-param (template variables, when the template contains placeholders)
  • --phone-numbers / --phone-number-json (phone numbers)

Handling Rules

When the user does not explicitly provide the signature or template, the AI agent must not guess or fabricate them. Instead it should:

  1. Ask the user proactively: "Which signature/template should I use? If unsure, I can list approved ones from your account for you to pick from."
  2. After the user agrees, call list APIs:
    • aliyun dysmsapi query-sms-sign-list ...
    • aliyun dysmsapi query-sms-template-list ...
    • Filter by SignStatus = 1 / TemplateStatus = 1 (approved) and present a table (index / code / name / content / status) for the user to choose.
  3. Resolve template variables: If the picked template contains ${xxx} placeholders, ask for each variable's value one by one and assemble them into --template-param JSON.
  4. Phone numbers: Always require explicit phone numbers from the user; never reuse placeholder numbers like 13800138000 from this document as the actual recipient.
  5. Final confirmation: Once all critical parameters are collected, restate the complete send plan and only call send-sms / send-batch-sms after the user gives an explicit confirmation (e.g. "confirm" / "send").

Quick Recovery When Signature / Template Is Invalid

If send-sms returns isv.SMS_SIGN_NAME_ILLEGAL / isv.SMS_TEMPLATE_ILLEGAL, the agent should proactively offer to "list existing signatures and templates" and, after the user agrees, call the list APIs instead of retrying blindly.

Prerequisites

1. Install aliyun CLI (>= 3.3.3)

# macOS
brew install aliyun-cli

# Linux
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
tar -xzf aliyun-cli-linux-latest-amd64.tgz && sudo mv aliyun /usr/local/bin/

aliyun version  # must be >= 3.3.3

2. Install the dysmsapi plugin

aliyun plugin install --names dysmsapi

3. Configure Credentials

The aliyun CLI default credential chain is recommended; it picks credentials in this priority order: env vars → ~/.aliyun/config.json → ECS RAM role → OIDC Token.

# Recommended for CI/CD: env vars
export ALIBABA_CLOUD_ACCESS_KEY_ID=\x3Cyour-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=\x3Cyour-access-key-secret>
export ALIBABA_CLOUD_REGION_ID=cn-hangzhou

# Verify
aliyun configure get

Important: Never hard-code AK/SK in code or commands. Always rely on the default credential chain. On ECS use a RAM role; in K8s use OIDC.

4. Activate the SMS Service

In the Alibaba Cloud SMS Console: activate the service, create an approved signature, and create an approved template.

Usage

Calling aliyun CLI directly

Send SMS:

aliyun dysmsapi send-sms \
  --api-version 2017-05-25 \
  --phone-numbers "13800138000" \
  --sign-name "AliyunDemo" \
  --template-code "SMS_123456" \
  --template-param '{"code":"123456"}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message \
  --read-timeout 3

Batch send (different signatures / template params):

aliyun dysmsapi send-batch-sms \
  --api-version 2017-05-25 \
  --phone-number-json '["13800138000","13900139000"]' \
  --sign-name-json '["SignA","SignB"]' \
  --template-code "SMS_123456" \
  --template-param-json '[{"code":"111111"},{"code":"222222"}]' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message \
  --read-timeout 3

Query lists / status / details:

# Approved signatures / templates (use to populate user choices)
aliyun dysmsapi query-sms-sign-list      --api-version 2017-05-25 --page-index 1 --page-size 50 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3
aliyun dysmsapi query-sms-template-list  --api-version 2017-05-25 --page-index 1 --page-size 50 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# Single signature / template lookup
aliyun dysmsapi get-sms-sign     --api-version 2017-05-25 --sign-name "AliyunDemo"     --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3
aliyun dysmsapi get-sms-template --api-version 2017-05-25 --template-code "SMS_123456" --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# Per-message delivery details (use BizId for precise lookup)
aliyun dysmsapi query-send-details \
  --api-version 2017-05-25 \
  --phone-number "13800138000" --send-date "20260326" \
  --page-size 10 --current-page 1 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# Aggregated statistics (--is-globe: 1=domestic, 2=intl/HK-Macao-Taiwan)
aliyun dysmsapi query-send-statistics \
  --api-version 2017-05-25 --is-globe 1 \
  --start-date "20260301" --end-date "20260326" \
  --page-index 1 --page-size 10 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# Filter by signature name + template type (optional)
aliyun dysmsapi query-send-statistics \
  --api-version 2017-05-25 --is-globe 1 \
  --start-date "20260301" --end-date "20260326" \
  --page-index 1 --page-size 10 \
  --sign-name "AliyunDemo" --template-type 0 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# SMS qualification — list records (full detail in references/sms-qualification.md)
aliyun dysmsapi query-sms-qualification-record \
  --api-version 2017-05-25 --page-no 1 --page-size 20 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# SMS qualification — single detail by GroupId
aliyun dysmsapi query-single-sms-qualification \
  --api-version 2017-05-25 --qualification-group-id 10000123 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

Full filter parameters, response schemas, and state enum mapping for the qualification APIs are documented in references/sms-qualification.md.

Using the wrapper script

scripts/send_sms.sh automatically applies --api-version, the compliant --user-agent, and --read-timeout:

# Send (single or comma-separated phones)
./scripts/send_sms.sh send -p "13800138000" -s "AliyunDemo" -t "SMS_123456" -tp '{"code":"123456"}'

# Send with signature/template pre-verification (recommended)
./scripts/send_sms.sh send -p "13800138000" -s "AliyunDemo" -t "SMS_123456" -tp '{"code":"123456"}' --verify

# List & inspect
./scripts/send_sms.sh list-signs
./scripts/send_sms.sh list-templates
./scripts/send_sms.sh query-sign     --sign-name "AliyunDemo"
./scripts/send_sms.sh query-template --template-code "SMS_123456"

# Status & statistics
./scripts/send_sms.sh query-status     -p "13800138000" --send-date "20260326" --biz-id "xxx^0"
./scripts/send_sms.sh query-statistics --start-date "20260301" --end-date "20260326"
./scripts/send_sms.sh query-statistics --start-date "20260301" --end-date "20260326" --is-globe 2

# Filter by signature name and/or template type
./scripts/send_sms.sh query-statistics --start-date "20260301" --end-date "20260326" --sign-name "AliyunDemo" --template-type 0

Parameters

aliyun dysmsapi send-sms

Parameter Required Description
--api-version Yes API version, fixed to 2017-05-25
--phone-numbers Yes Phone numbers, comma-separated, up to 1000
--sign-name Yes SMS signature name
--template-code Yes SMS template code
--template-param No Template variables JSON, e.g. '{"code":"123456"}'
--out-id No External tracking ID
--user-agent Yes Fixed to AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message
--read-timeout Yes Read timeout in seconds, recommended value 3

aliyun dysmsapi send-batch-sms (batch send)

Parameter Required Description
--api-version Yes API version, fixed to 2017-05-25
--phone-number-json Yes Phone numbers JSON array, up to 100, e.g. '["138xxx","139xxx"]'
--sign-name-json Yes Signature names JSON array, must match the phone count
--template-code Yes Template code (all phones share the same template)
--template-param-json No Template variables JSON array, must match the phone count
--sms-up-extend-code-json No Upstream SMS extension codes JSON array
--out-id No External tracking ID, less than 256 characters
--user-agent Yes Fixed to AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message
--read-timeout Yes Read timeout in seconds, recommended value 3

SendSms vs SendBatchSms: send-sms shares one signature/template across up to 1000 numbers; send-batch-sms lets each phone use a different signature/template params (up to 100 numbers).

aliyun dysmsapi query-send-statistics

Parameter Required Description
--api-version Yes API version, fixed to 2017-05-25
--is-globe Yes Scope: 1 = domestic; 2 = international / HK-Macao-Taiwan
--start-date Yes Start date in yyyyMMdd
--end-date Yes End date in yyyyMMdd
--page-index Yes Current page, starts from 1
--page-size Yes Page size, 1~50
--template-type No 0=verify code, 1=notification, 2=marketing(corp), 3=intl/HK-Macao-Taiwan(corp), 7=digital
--sign-name No Filter by signature name
--user-agent Yes Fixed to AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message
--read-timeout Yes Read timeout in seconds, recommended value 3

Response: returns Data.TargetList[] (each entry has SendDate, TotalCount, RespondedSuccessCount, RespondedFailCount, NoRespondedCount) and Data.TotalSize.

Wrapper script options

Option Short Description
--phone-numbers -p Phone numbers
--sign-name -s Signature name
--template-code -t Template code
--template-param -tp Template variables (JSON)
--out-id -o External tracking ID
--verify Verify signature/template before sending
--region -r Region ID, defaults to cn-hangzhou
--profile Use the given aliyun CLI profile

Output

Successful send response

{
  "BizId": "114814474505895421^0",
  "Code": "OK",
  "Message": "OK",
  "RequestId": "4C3D8B1B-B3D8-5673-B724-1F251799CE9A"
}

Approval status reference

Value SignStatus / TemplateStatus Description
0 Reviewing SMS cannot be sent for now
1 Approved Available for sending
2 Rejected Needs revision and resubmission
10 Cancelled Sign/template has been cancelled

Error Handling

Common business error codes

Error code Description Suggested action
isv.SMS_SIGNATURE_SCENE_ILLEGAL Signature/template scene mismatch Make sure signature and template scenes align
isv.SMS_TEMPLATE_ILLEGAL Template missing or unapproved Verify the template has been approved
isv.SMS_SIGN_NAME_ILLEGAL Signature missing or unapproved Verify the signature has been approved
isv.MOBILE_NUMBER_ILLEGAL Bad phone number format Check the number format
isv.AMOUNT_NOT_ENOUGH Insufficient account balance Top up the SMS quota
isv.BUSINESS_LIMIT_CONTROL Throttling triggered Reduce the send rate
SignatureNotFound Signature not found Create the signature in the console
TemplateNotFound Template not found Create the template in the console

CLI configuration errors

Error message Cause Resolution
InvalidAccessKeyId.NotFound Wrong AccessKey ID Check the AccessKey ID
SignatureDoesNotMatch Wrong Secret Check the AccessKey Secret
Forbidden.RAM Insufficient permission Verify the RAM user has SMS permissions

Execution Flow

  1. Pre-check: aliyun CLI installed (>= 3.3.3) and dysmsapi plugin available; AI-Mode enabled; credentials configured.
  2. Validate required parameters (phone-numbers, sign-name, template-code). If signature or template is missing, ask the user; after consent call query-sms-sign-list / query-sms-template-list and present approved candidates.
  3. [Optional, --verify] Verify signature status via get-sms-sign (SignStatus=1).
  4. [Optional, --verify] Verify template status via get-sms-template (TemplateStatus=1).
  5. Send via aliyun dysmsapi send-sms (or send-batch-sms for per-recipient personalization).
  6. Return result: Code=OK → success, return BizId; otherwise return error info.
  7. [MUST] Disable AI-Mode at every exit (success / failure / cancellation).

Examples

Scenario 1: Send a verification code

# 1) Pull approved signatures & templates first (so the user can pick)
aliyun dysmsapi query-sms-sign-list     --api-version 2017-05-25 --page-index 1 --page-size 50 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3
aliyun dysmsapi query-sms-template-list --api-version 2017-05-25 --page-index 1 --page-size 50 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# 2) Send (after user confirmation)
aliyun dysmsapi send-sms \
  --api-version 2017-05-25 \
  --phone-numbers "13800138000" \
  --sign-name "YourSign" --template-code "SMS_xxx" \
  --template-param '{"code":"123456"}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

Scenario 2: Bulk-send with same signature & params

aliyun dysmsapi send-sms \
  --api-version 2017-05-25 \
  --phone-numbers "13800138000,13900139000,13700137000" \
  --sign-name "YourSign" --template-code "SMS_xxx" \
  --template-param '{"activity":"Double 11 Sale","discount":"50% OFF"}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

Scenario 3: Batch send with per-recipient personalization

aliyun dysmsapi send-batch-sms \
  --api-version 2017-05-25 \
  --phone-number-json '["13800138000","13900139000","13700137000"]' \
  --sign-name-json    '["BrandA","BrandB","BrandC"]' \
  --template-code "SMS_xxx" \
  --template-param-json '[{"name":"Alice","code":"111111"},{"name":"Bob","code":"222222"},{"name":"Charlie","code":"333333"}]' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

Lengths of --phone-number-json, --sign-name-json, and --template-param-json must match and correspond one-to-one.

Scenario 4: Verify delivery & aggregate statistics

# Per-message delivery (uses BizId returned by send-sms)
aliyun dysmsapi query-send-details \
  --api-version 2017-05-25 \
  --phone-number "13800138000" --send-date "20260326" --biz-id "xxx^0" \
  --page-size 10 --current-page 1 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

# Range-based aggregated statistics (1 row per send-day)
aliyun dysmsapi query-send-statistics \
  --api-version 2017-05-25 --is-globe 1 \
  --start-date "20260301" --end-date "20260326" \
  --page-index 1 --page-size 10 \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

QuerySendDetails vs QuerySendStatistics: query-send-details returns per-message records (delivery time, error code) — useful for troubleshooting. query-send-statistics returns aggregated daily counts — useful for trend reporting.

Multi-Environment / Multi-Account

aliyun CLI supports multiple profiles. Prefer env vars or RAM roles:

# Option 1: env vars (recommended)
export ALIBABA_CLOUD_ACCESS_KEY_ID=\x3Cyour-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=\x3Cyour-access-key-secret>

# Option 2: profiles (region only; credentials still come from env vars or RAM role)
aliyun configure set --profile prod --region cn-hangzhou
aliyun configure set --profile test --region cn-shanghai

aliyun dysmsapi send-sms --profile prod \
  --api-version 2017-05-25 \
  --phone-numbers "13800138000" --sign-name "Sign" --template-code "SMS_xxx" \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message --read-timeout 3

Notes

  1. Plugin install: First-time use requires aliyun plugin install --names dysmsapi.
  2. API version: When calling the CLI directly, --api-version 2017-05-25 is mandatory.
  3. Parameter format: kebab-case (e.g. --phone-numbers, not --PhoneNumbers).
  4. Timeout: --read-timeout 3 is required. After a timeout, query the delivery receipt before deciding whether to retry.
  5. User-Agent: --user-agent AlibabaCloud-Agent-Skills/alibabacloud-sms-send-short-message is required so the server can identify the caller.
  6. Idempotency: SendSms/SendBatchSms are NOT idempotent — prevent duplicate sends at the business layer.
  7. Single vs batch: Prefer send-sms for verification codes; send-batch-sms is only needed when each recipient requires different signature or template params (≤ 100).
  8. Billing: Billing depends on carrier delivery; API success but carrier failure is not billed. QPS limit is 5000/s per user.
  9. Credential safety: Never hard-code AK/SK; always rely on the default credential chain (env vars / ~/.aliyun/config.json / ECS RAM role / OIDC).
  10. Parameter confirmation: Never guess signature/template — always ask the user, and after consent fetch query-sms-sign-list / query-sms-template-list (see "Interactive Parameter Confirmation").

References

Usage Guidance
Install only if you are comfortable giving the skill Alibaba Cloud SMS access and potentially read access to sensitive SMS qualification records. Prefer a least-privilege RAM policy limited to SendSms/SendBatchSms and only the specific query APIs you need; avoid the full policy unless an administrator approves it. Preinstall and review the aliyun CLI/plugin yourself instead of relying on automatic installation, and treat phone numbers, message contents, delivery records, and qualification data as personal or business-sensitive data.
Capability Assessment
Purpose & Capability
Core SMS sending, template/signature checks, delivery status, and statistics fit the stated purpose, but qualification-detail queries expose company, legal-person, admin, ID-card, phone, and document URL data that is broader than routine SMS sending.
Instruction Scope
The skill discloses the qualification APIs, but the scope is broad and not limited to minimal approval status; it also instructs agents to enable CLI auto-plugin install, update plugins, and use AI-mode configuration globally.
Install Mechanism
The script auto-installs the dysmsapi plugin at runtime if missing, and SKILL.md recommends curl-to-bash CLI installation plus plugin updates, which are environment-changing actions that should be explicit and controlled.
Credentials
Using Alibaba Cloud credentials and sending phone numbers/message parameters is expected for SMS, but full account-level query permissions and qualification-detail reads are disproportionate for a send-focused skill.
Persistence & Privilege
No hidden persistence or destructive behavior was found, and AI-mode is documented as disabled at exit, but the skill changes CLI configuration and relies on local Alibaba Cloud credential/profile state.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install alibabacloud-sms-send-short-message
  3. After installation, invoke the skill by name or use /alibabacloud-sms-send-short-message
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.0.1
Initial release of Alibaba Cloud SMS Send Short Message Skill. - Send SMS (verification codes, notifications, marketing) via Alibaba Cloud SMS through aliyun CLI. - Supports both single and batch sends, including domestic and international/HK-Macao-Taiwan messages. - Includes signature and template approval status checks before sending messages. - Provides interactive confirmation and selection for required parameters (signatures, templates, phone numbers). - Offers CLI guidance, critical compliance instructions, and error handling best practices. - Supports querying sending status, statistics, and qualification records.
Metadata
Slug alibabacloud-sms-send-short-message
Version 0.0.1
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Alibabacloud Sms Send Short Message?

Send short messages (SMS) to specified phone numbers via Alibaba Cloud Short Message Service. Supports verification codes, notification messages, and marketi... It is an AI Agent Skill for Claude Code / OpenClaw, with 41 downloads so far.

How do I install Alibabacloud Sms Send Short Message?

Run "/install alibabacloud-sms-send-short-message" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Alibabacloud Sms Send Short Message free?

Yes, Alibabacloud Sms Send Short Message is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Alibabacloud Sms Send Short Message support?

Alibabacloud Sms Send Short Message is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Alibabacloud Sms Send Short Message?

It is built and maintained by alibabacloud-skills-team (@sdk-team); the current version is v0.0.1.

💬 Comments