Skill: raphacastelloes/message-send (version 1.0.0)

--- name: message-send description: Instruções e fluxo de trabalho para o comando openclaw message send. Utilize para enviar mensagens, mídias e payloads complexos (botões/cards) para múltiplos canais de chat como WhatsApp, Telegram, Discord e Slack. --- # Skill: message-send Esta skill fornece orientação procedural para o envio de mensagens através do comando `openclaw message send`. ## Fluxo de Trabalho Recomendado Siga estes passos para garantir que a mensagem seja enviada corretamente para o destino desejado: 1. **Verificar Canais Ativos**: Execute `openclaw channels list` para confirmar quais canais estão configurados e habilitados. 2. **Identificar o Alvo (Target)**: Se não possuir o ID exato do contato ou grupo, utilize o comando `openclaw directory` para pesquisar. - `openclaw directory peers list --channel <canal> --query "<nome>"` - `openclaw directory groups list --channel <canal>` 3. **Enviar a Mensagem**: Execute o comando de envio com os parâmetros necessários. - **Simples**: `openclaw message send --channel <canal> --target <id> --message "Sua mensagem aqui"` - **Com Mídia**: `openclaw message send --channel <canal> --target <id> --media "/caminho/para/arquivo.png"` (opcional: inclua `--message` para legenda). - **Com Botões**: Utilize `--buttons '<json>'`. Veja exemplos em [references/payloads.md](references/payloads.md). ## Opções Comuns - `--channel`: O serviço de chat (ex: `whatsapp`, `telegram`, `discord`, `slack`). - `--target`: O ID do destino (E.164 para números, @username ou ID numérico para outros). Veja detalhes em [references/channels.md](references/channels.md). - `--message`: O texto da mensagem. - `--reply-to`: O ID de uma mensagem para responder (se suportado pelo canal). - `--silent`: Envia sem notificação (suportado no Telegram e Discord). - `--dry-run`: Exibe o payload mas não envia a mensagem. Útil para depurar JSONs complexos. ## Casos Especiais e Referências - **Detalhes de Canais**: Para saber os tipos de IDs aceitos por cada canal, consulte [references/channels.md](references/channels.md). - **JSONs para Cards e Botões**: Para enviar botões, adaptive cards ou componentes do Discord, consulte [references/payloads.md](references/payloads.md). - **Multi-contas**: Se houver mais de uma conta no mesmo canal, especifique a conta com `--account <id>`.

path: references/channels.md
content: # Canais Suportados pelo OpenClaw

O OpenClaw suporta uma ampla variedade de canais de chat. Cada canal possui suas próprias particularidades para o parâmetro `--target`.

## Resumo dos Canais e Alvos

| Canal | Tipo de Target (Alvo) | Notas |
| :--- | :--- | :--- |
| **whatsapp** | Número de telefone (E.164) ou Group ID | Ex: `+5511999999999` ou `12036302...` |
| **telegram** | Chat ID (numérico) ou @username | Ex: `12345678` ou `@usuario` |
| **discord** | Channel ID ou User ID | Requer IDs numéricos longos do Discord. |
| **slack** | Channel ID (ex: `C12345`) ou User ID | Use `openclaw directory` para obter IDs. |
| **signal** | Número de telefone (E.164) | Ex: `+5511999999999` |
| **imessage** | Apple ID ou Número (E.164) | Funciona apenas em macOS. |
| **googlechat** | Space ID ou User ID | Formato: `spaces/AAAAA...` |
| **matrix** | Room ID ou User ID | Ex: `!room:matrix.org` ou `@user:matrix.org` |

## Como encontrar o ID correto?

Sempre utilize o comando `openclaw directory` antes de enviar para garantir que o ID do alvo está correto.

- Para contatos (usuários): `openclaw directory peers list --channel <canal> --query "<nome>"`
- Para grupos/canais: `openclaw directory groups list --channel <canal>`

## Contas Múltiplas

Se você possuir mais de uma conta conectada ao mesmo canal, utilize o parâmetro `--account <id>` para especificar por qual conta a mensagem deve ser enviada. Você pode ver os IDs das contas em `openclaw config get channels`.


path: references/payloads.md
content: # Exemplos de Payloads JSON para Mensagens

O comando `openclaw message send` aceita payloads complexos via JSON para botões, cards adaptativos e componentes específicos (como os do Discord).

## Botões (Telegram e outros compatíveis)
Use o parâmetro `--buttons '<json>'`. O JSON deve ser um array de linhas (rows), onde cada linha contém um array de botões.

### Exemplo: Botões em Linha (Inline Buttons)
```json
[
  [
    { "text": "Google", "url": "https://google.com" },
    { "text": "Ajuda", "callback_data": "help_command" }
  ],
  [
    { "text": "Cancelar", "callback_data": "cancel" }
  ]
]
```

## Adaptive Cards (Google Chat, Teams e outros)
Use o parâmetro `--card '<json>'`. O JSON deve seguir a especificação oficial do Adaptive Cards.

### Exemplo: Card Simples com Texto e Imagem
```json
{
  "type": "AdaptiveCard",
  "body": [
    { "type": "TextBlock", "size": "Medium", "weight": "Bolder", "text": "Título do Card" },
    { "type": "Image", "url": "https://example.com/image.png", "size": "Small" },
    { "type": "TextBlock", "text": "Descrição breve do conteúdo.", "wrap": true }
  ],
  "actions": [
    { "type": "Action.OpenUrl", "title": "Ver Mais", "url": "https://example.com" }
  ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.3"
}
```

## Componentes do Discord
Use o parâmetro `--components '<json>'`. O JSON deve seguir a estrutura de componentes do Discord.

### Exemplo: Botões no Discord
```json
[
  {
    "type": 1,
    "components": [
      { "type": 2, "label": "Aceitar", "style": 1, "custom_id": "accept" },
      { "type": 2, "label": "Recusar", "style": 4, "custom_id": "reject" }
    ]
  }
]
```

## Dica: Escapando JSON no Terminal
Ao usar o CLI, prefira utilizar aspas simples (`'`) para envolver o JSON e aspas duplas (`"`) dentro do JSON:
```bash
openclaw message send --channel telegram --target @user --message "Escolha:" --buttons '[[{"text":"Sim","callback_data":"yes"}]]'
```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)