> ## Documentation Index
> Fetch the complete documentation index at: https://docs.so-me.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI থেকে WhatsApp Business টেমপ্লেট

> Social media studio CLI থেকে WhatsApp Business মেসেজ টেমপ্লেট তৈরি, তালিকা ও মুছুন এবং টেমপ্লেট বার্তা পাঠান।

এই কমান্ডগুলো `/v1/whatsapp/*` API-কে মোড়ক দেয়। পরিসর ইচ্ছাকৃতভাবে সীমিত — টেমপ্লেটের জীবনচক্র এবং আউটবাউন্ড টেমপ্লেট বার্তা পাঠানো। WABA সংযোগ শুধু ব্রাউজারে (OAuth) হয় এবং ড্যাশবোর্ডেই থাকে।

> [!NOTE]
>
> সব কমান্ড `<account-id>` অবস্থানে **অভ্যন্তরীণ সোশ্যাল অ্যাকাউন্ট UUID** ([`accounts:list`](/bn/cli/accounts) থেকে) অথবা **Meta WABA প্রোভাইডার ID** গ্রহণ করে। v1 কন্ট্রোলার সার্ভার-সাইডে UUID-কে প্রোভাইডার ID-তে সমাধান করে।

## whatsapp:templates

একটি WhatsApp Business অ্যাকাউন্টে নিবন্ধিত প্রতিটি টেমপ্লেটের তালিকা দেখুন, স্ট্যাটাস (`APPROVED`, `PENDING`, `REJECTED`), ক্যাটাগরি, ভাষা ও কম্পোনেন্ট কাঠামোসহ।

```bash theme={null}
so-me whatsapp:templates <account-id>
```

| আর্গুমেন্ট | বিবরণ |
| - | - |
| `<account-id>` | WhatsApp সোশ্যাল অ্যাকাউন্ট UUID ([`accounts:list`](/bn/cli/accounts) থেকে) অথবা Meta WABA প্রোভাইডার ID **(আবশ্যক)** |

```bash উদাহরণ theme={null}
# Full list
so-me whatsapp:templates e6be46a2-430a-41df-b180-b51527e954e3

# Only approved templates
so-me whatsapp:templates e6be46a2-... | jq '.data[] | select(.status == "APPROVED")'

# Just names + status as a table-ish view
so-me whatsapp:templates e6be46a2-... | jq -r '.data[] | "\(.status)\t\(.name)\t\(.language)"'

# Pass provider ID instead of UUID
so-me whatsapp:templates 1050417321480811
```

## whatsapp:create-template

অনুমোদনের জন্য Meta-র কাছে একটি নতুন টেমপ্লেট জমা দিন। টেমপ্লেট অনুমোদন হতে কয়েক মিনিট থেকে কয়েক ঘণ্টা লাগতে পারে; স্ট্যাটাস `PENDING` → `APPROVED` হওয়া দেখতে `whatsapp:templates` পোল করুন।

```bash theme={null}
so-me whatsapp:create-template --account <id> (--file <path> | --data <json>)
```

| অপশন | বিবরণ |
| - | - |
| `--account <id>` | WhatsApp অ্যাকাউন্ট UUID বা প্রোভাইডার ID **(আবশ্যক)** |
| `-f, --file <path>` | সম্পূর্ণ টেমপ্লেট সংজ্ঞাসহ JSON ফাইল |
| `-d, --data <json>` | সম্পূর্ণ টেমপ্লেট সংজ্ঞাসহ JSON স্ট্রিং |

টেমপ্লেট সংজ্ঞা `--file` **অথবা** `--data` দিয়ে দিন (দুটোই দিলে `--file` প্রাধান্য পায়; কোনোটি না দিলে কমান্ড ত্রুটি দেয়)। পেলোড Meta-র WhatsApp Cloud API স্কিমার সাথে মেলে। ন্যূনতম ফিল্ড:

* `name` — ছোট হাতের অক্ষর, আন্ডারস্কোরযুক্ত
* `language` — যেমন `en_US`
* `category` — `MARKETING`, `UTILITY` বা `AUTHENTICATION`
* `components[]` — `HEADER`, `BODY`, `FOOTER`, `BUTTONS`

জমা দেওয়ার আগে CLI `--account` থেকে `accountId` পেলোডে মিলিয়ে দেয়, তাই JSON-এ এটি রাখার দরকার নেই।

```json theme={null}
{
  "name": "order_shipped",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    { "type": "HEADER", "format": "TEXT", "text": "Order update" },
    { "type": "BODY", "text": "Hi {{1}}, your order #{{2}} has shipped." },
    { "type": "FOOTER", "text": "Thanks for shopping with us!" }
  ]
}
```

```bash উদাহরণ theme={null}
# From a file
so-me whatsapp:create-template --account e6be46a2-... --file ./order_shipped.json

# Inline
so-me whatsapp:create-template --account e6be46a2-... --data '{
  "name": "welcome_v1",
  "language": "en_US",
  "category": "MARKETING",
  "components": [{ "type": "BODY", "text": "Welcome, {{1}}!" }]
}'
```

> [!WARNING]
>
> টেমপ্লেটের নাম ছোট হাতের অক্ষর-সংখ্যা ও আন্ডারস্কোর (`^[a-z0-9_]+$`) দিয়ে হতে হবে। Meta এটি যাচাই করে — না মিললে সাথে সাথে 400 ত্রুটিসহ প্রত্যাখ্যাত হয়।

## whatsapp:delete-template

একটি টেমপ্লেট স্থায়ীভাবে মুছুন। একবার মুছলে এটি পুনরুদ্ধার করা যায় না; নতুন নামে আবার জমা দিতে হবে।

```bash theme={null}
so-me whatsapp:delete-template <account-id> <template-name> [-y]
```

| আর্গুমেন্ট | বিবরণ |
| - | - |
| `<account-id>` | WhatsApp সোশ্যাল অ্যাকাউন্ট UUID বা প্রোভাইডার ID **(আবশ্যক)** |
| `<template-name>` | টেমপ্লেটের নাম (`lowercase_underscored`) **(আবশ্যক)** |

| অপশন | বিবরণ |
| - | - |
| `-y, --yes` | নিশ্চিতকরণ প্রম্পট এড়িয়ে যান |

`-y` ছাড়া কমান্ড `Delete template "<name>" on account <id>? (y/N)` প্রম্পট দেয় এবং আপনি `y` না বললে বাতিল করে।

```bash উদাহরণ theme={null}
# With confirmation
so-me whatsapp:delete-template e6be46a2-... old_template

# Skip prompt
so-me whatsapp:delete-template e6be46a2-... old_template -y

# Delete every REJECTED template (careful)
so-me whatsapp:templates e6be46a2-... \
  | jq -r '.data[] | select(.status == "REJECTED") | .name' \
  | xargs -I {} so-me whatsapp:delete-template e6be46a2-... {} -y
```

## whatsapp:send

একজন প্রাপকের কাছে অনুমোদিত একটি টেমপ্লেট বার্তা পাঠান। ২৪ ঘণ্টার কাস্টমার-সার্ভিস উইন্ডোর বাইরে WhatsApp কথোপকথন **শুরু করার** প্রধান উপায় এটি।

```bash theme={null}
so-me whatsapp:send <account-id> --to <phone> --template <name> --language <code> [--components <json>]
```

| আর্গুমেন্ট | বিবরণ |
| - | - |
| `<account-id>` | WhatsApp সোশ্যাল অ্যাকাউন্ট UUID বা প্রোভাইডার ID **(আবশ্যক)** |

| অপশন | বিবরণ |
| - | - |
| `--to <phone>` | E.164 ফরম্যাটে প্রাপক (যেমন `+15551234567`) **(আবশ্যক)** |
| `--template <name>` | একটি APPROVED টেমপ্লেটের নাম **(আবশ্যক)** |
| `--language <code>` | ভাষার কোড (যেমন `en_US`, `es`, `pt_BR`) **(আবশ্যক)** |
| `--components <json>` | ইনলাইন JSON স্ট্রিং হিসেবে টেমপ্লেটের প্যারামিটার |
| `--file <path>` | JSON ফাইল থেকে টেমপ্লেটের প্যারামিটার |

`--components` ও `--file` দুটোই ঐচ্ছিক (ভ্যারিয়েবলহীন টেমপ্লেটে কোনোটিই লাগে না)। দুটোই দিলে `--file` অগ্রাধিকার পায়।

কম্পোনেন্ট প্যারামিটার অনুমোদিত টেমপ্লেটের ভ্যারিয়েবল (`{{1}}`, `{{2}}` ইত্যাদি) পূরণ করে। কাঠামো Meta-র Cloud API-র সাথে মেলে:

```json theme={null}
[
  {
    "type": "body",
    "parameters": [
      { "type": "text", "text": "Alice" },
      { "type": "text", "text": "1234" }
    ]
  }
]
```

```bash উদাহরণ theme={null}
# Template with no variables
so-me whatsapp:send e6be46a2-... \
  --to +15551234567 --template welcome_v1 --language en_US

# Template with body variables
so-me whatsapp:send e6be46a2-... \
  --to +15551234567 --template order_shipped --language en_US \
  --components '[{"type":"body","parameters":[{"type":"text","text":"Alice"},{"type":"text","text":"ORD-1234"}]}]'

# Parameters from a file (easier for complex components)
so-me whatsapp:send e6be46a2-... \
  --to +15551234567 --template order_shipped --language en_US \
  --file ./order_components.json

# Broadcast loop (be mindful of Meta's messaging rate limits)
while read -r phone name; do
  so-me whatsapp:send e6be46a2-... \
    --to "$phone" --template welcome_v1 --language en_US \
    --components "[{\"type\":\"body\",\"parameters\":[{\"type\":\"text\",\"text\":\"$name\"}]}]"
done < recipients.tsv
```

> [!WARNING]
>
> টেমপ্লেট পাঠানোর খরচ Meta-র WhatsApp Business মূল্য অনুযায়ী বিল হয়। সবসময় আগে একজন প্রাপকের উপর পরীক্ষা করুন। অনুমোদনহীন বা প্রত্যাখ্যাত টেমপ্লেট 400 ত্রুটিসহ ব্যর্থ হবে।

## whatsapp:upload-media

একটি টেমপ্লেটের `HEADER` কম্পোনেন্টে ব্যবহারের জন্য হেডার মিডিয়া (ছবি/ভিডিও/ডকুমেন্ট) আপলোড করুন। টেমপ্লেট তৈরি বা পাঠানোর সময় রেফার করার মতো একটি মিডিয়া হ্যান্ডল ফেরত দেয়।

```bash theme={null}
so-me whatsapp:upload-media --account <id> --type <fileType> (--url <url> | --base64 <content>)
```

| অপশন | বিবরণ |
| - | - |
| `--account <id>` | WhatsApp অ্যাকাউন্ট UUID বা প্রোভাইডার ID **(আবশ্যক)** |
| `--type <fileType>` | ফাইলের ধরন: `image`, `video` বা `document` **(আবশ্যক)** |
| `--url <url>` | আপলোড করার মিডিয়ার পাবলিক URL |
| `--base64 <content>` | Base64-এনকোড করা ফাইলের কনটেন্ট (`--url`-এর বিকল্প) |

`--url` বা `--base64`-এর ঠিক একটি দিন — কোনোটি না দিলে বা দুটোই দিলে কমান্ড ত্রুটি দেয়।

```bash উদাহরণ theme={null}
# From a public URL
so-me whatsapp:upload-media \
  --account e6be46a2-... --type image \
  --url https://cdn.example.com/hero.jpg

# From a local file (base64-encoded)
so-me whatsapp:upload-media \
  --account e6be46a2-... --type image \
  --base64 "$(base64 -w0 ./hero.jpg)"
```

## বৃহত্তর চিত্র

* **সেশন বার্তা** (ইনবাউন্ড বার্তার ২৪ ঘণ্টার মধ্যে উত্তর) [`inbox:reply`](/bn/cli/inbox)-এর মাধ্যমে যায় — টেমপ্লেট লাগে না।
* **টেমপ্লেট বার্তা** (প্রথম যোগাযোগ বা ২৪ ঘণ্টার উইন্ডোর বাইরে) `whatsapp:send` ব্যবহার করে এবং Meta-অনুমোদিত টেমপ্লেট প্রয়োজন।
* **WhatsApp Business অ্যাকাউন্ট সংযুক্ত করা** এখনও শুধু ব্রাউজারে — আগে [ড্যাশবোর্ডে](https://so-me.studio/bn) OAuth সম্পন্ন করুন, তারপর আপনার CLI স্ক্রিপ্ট সংযুক্ত অ্যাকাউন্ট রেফার করতে পারবে।


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.