# কাকাও এপিআই

import { Badge } from '@astrojs/starlight/components';

<Aside type="caution" title="/createKakaoMessage অপ্রচলিত">
নতুন ইন্টিগ্রেশনের জন্য [মেসেজিং এপিআই v2](/bn/developer/api-reference/messaging-api-v2/) ব্যবহার করা উচিত — `Notify`-তে `platforms: ["KAKAO"]` পাস করুন এবং `payload.content.localized_content`-এর ভিতরে `kakao` ব্লক ব্যবহার করুন। [মাইগ্রেশন গাইড](/bn/developer/api-reference/messaging-api-v2/migration-from-v1/#from-createkakaomessage) দেখুন।
</Aside>

## createKakaoMessage <Badge text="অপ্রচলিত" variant="caution" size="small" />

ব্যবহারকারীদের কাকাও বার্তা পাঠাতে এই এন্ডপয়েন্টটি ব্যবহার করুন।

`POST` `https://api.pushwoosh.com/json/1.3/createKakaoMessage`

<Aside type="note">
এই এন্ডপয়েন্টটি শুধুমাত্র কাকাও মেসেজিংয়ের জন্য। মাল্টি-চ্যানেল মেসেজিংয়ের জন্য, [`/createMessage`](/bn/developer/api-reference/messages-api/) ব্যবহার করুন।
</Aside>

### পূর্বশর্ত

এই এন্ডপয়েন্টটি ব্যবহার করার আগে, নিশ্চিত করুন:

1.  **কাকাও প্ল্যাটফর্ম কনফিগার করা আছে**: আপনার Pushwoosh অ্যাপ্লিকেশনে অবশ্যই কাকাও ক্রেডেনশিয়াল কনফিগার করা থাকতে হবে। [আরও জানুন](/bn/developer/first-steps/connect-messaging-services/kakao-configuration/)

2.  **টেমপ্লেট অনুমোদিত**: কাকাও টেমপ্লেট ব্যবহার করার আগে অবশ্যই তৈরি এবং অনুমোদিত হতে হবে। [আরও জানুন](/bn/product/content/kakao-presets/)

3.  **ডিভাইস রেজিস্টার করা আছে**: কাকাও এন্ডপয়েন্ট হিসাবে স্বীকৃত হওয়ার জন্য ডিভাইসগুলিকে অবশ্যই `kakao:` প্রিফিক্স দিয়ে রেজিস্টার করতে হবে।

### রিকোয়েস্ট বডি

| নাম <div style="width:180px"></div> | প্রয়োজনীয় <div style="width:100px"></div> | টাইপ | বিবরণ |
| :---- | :---- | :---- | :---- |
| auth\* | হ্যাঁ | string | Pushwoosh কন্ট্রোল প্যানেল থেকে [API অ্যাক্সেস টোকেন](/bn/developer/api-reference/api-identifiers/#api-access-token)। |
| application\* | হ্যাঁ | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code) |
| notifications\* | হ্যাঁ | array | নোটিফিকেশন অবজেক্টের অ্যারে। নিচে বিস্তারিত দেখুন। |

### নোটিফিকেশন প্যারামিটার

| নাম <div style="width:180px"></div> | প্রয়োজনীয় | টাইপ | বিবরণ |
| :---- | :---- | :---- | :---- |
| send_date* | হ্যাঁ | string | বার্তা পাঠানোর তারিখ এবং সময়। `YYYY-MM-DD HH:MM:SS` (UTC) ফরম্যাট বা অবিলম্বে পাঠানোর জন্য `"now"` ব্যবহার করুন। সমস্ত সময় UTC হিসাবে ব্যাখ্যা করা হয়। |
| devices* | `users` প্রদান করা না হলে প্রয়োজনীয় | array[string] | ডিভাইস টোকেনের তালিকা। প্রতিটি টোকেনের আগে অবশ্যই `kakao:` প্রিফিক্স থাকতে হবে (যেমন, `"kakao:user_token"`)। |
| users* | `devices` প্রদান করা না হলে প্রয়োজনীয় | array[string] | টার্গেট করার জন্য ইউজার আইডির তালিকা। |
| template* | হ্যাঁ | string | কাকাও টেমপ্লেটের নাম। অবশ্যই একটি পূর্ব-অনুমোদিত টেমপ্লেট হতে হবে। [আরও জানুন](/bn/product/content/kakao-presets/) |
| kakao_content_variables | না | object | টেমপ্লেট ভেরিয়েবল প্রতিস্থাপনের জন্য কী-ভ্যালু পেয়ার। কীগুলি অবশ্যই আপনার কাকাও টেমপ্লেটে সংজ্ঞায়িত ভেরিয়েবলের সাথে মিলতে হবে। ঐচ্ছিক কিন্তু আপনার কাকাও বার্তাগুলির ডাইনামিক ব্যক্তিগতকরণের অনুমতি দেয়। |

<Aside type="caution" title="গুরুত্বপূর্ণ">
আপনাকে অবশ্যই `devices` বা `users` প্রদান করতে হবে। উভয়ই খালি রাখবেন না।
</Aside>

#### নিষিদ্ধ প্যারামিটার

নিম্নলিখিত প্যারামিটারগুলি এই এন্ডপয়েন্টের জন্য অনুমোদিত নয় এবং এর ফলে একটি ভ্যালিডেশন ত্রুটি হবে:

- `platforms`: প্ল্যাটফর্মটি স্বয়ংক্রিয়ভাবে কাকাওতে সেট করা আছে
- `filter`: ডিভাইস ফিল্টারিং সমর্থিত নয়
- `filter_code`: ফিল্টার কোড সমর্থিত নয়
- `conditions`: শর্তাধীন টার্গেটিং সমর্থিত নয়

### রিকোয়েস্টের উদাহরণ

```json
{
  "request": {
    "auth": "your-api-access-token",        // required. API access token from Pushwoosh Control Panel.
    "application": "XXXXX-XXXXX",           // required. Pushwoosh application code.
    "notifications": [
      {
        "send_date": "now",                 // required. YYYY-MM-DD HH:MM:SS (UTC) OR "now".
        "devices": ["kakao:user123@kakao.com", "kakao:device_abc"],  // required if users is not provided. Device tokens with kakao: prefix.
        "users": ["user_001", "user_002"],  // required if devices is not provided. User IDs to target.
        "template": "welcome_message",      // required. Kakao template name (must be pre-approved).
        "kakao_content_variables": {        // optional. Template variable substitution.
          "user_name": "John Doe",
          "order_number": "12345"
        }
      }
    ]
  }
}
```

### রেসপন্সের উদাহরণ

<Tabs>
<TabItem label="200">

```json
{
  "status_code": 200,
  "response": {
    "Messages": ["MESSAGE_ID_1"],
    "Warnings": [],
    "UnknownDevices": {},
    "UnknownUsers": {},
    "FailedDevices": {},
    "UnknownPhoneNumbers": {}
  }
}
```

| ফিল্ড | টাইপ | বিবরণ |
|-------|------|-------------|
| `Messages` | array[string] | ট্র্যাকিংয়ের জন্য তৈরি করা মেসেজ আইডির অ্যারে |
| `Warnings` | array | প্রসেসিংয়ের সময় তৈরি হওয়া যেকোনো সতর্কতা |
| `UnknownDevices` | object | যে ডিভাইসগুলি খুঁজে পাওয়া যায়নি |
| `UnknownUsers` | object | যে ইউজার আইডিগুলি সমাধান করা যায়নি |
| `FailedDevices` | object | প্রসেসিংয়ের সময় ব্যর্থ হওয়া ডিভাইস |
| `UnknownPhoneNumbers` | object | যে ফোন নম্বরগুলি খুঁজে পাওয়া যায়নি |

</TabItem>

<TabItem label="210">

```json
{
  "status_code": 210,
  "status_message": "Error description"
}
```

##### সাধারণ ত্রুটি বার্তা

| ত্রুটি বার্তা | কারণ |
| :---- | :---- |
| `Missing required parameter: send_date` | নোটিফিকেশনে `send_date` ফিল্ডটি প্রদান করা হয়নি |
| `Missing required parameter: devices or users` | `devices` বা `users` কোনো অ্যারে প্রদান করা হয়নি |
| `Invalid Kakao devices list` | এক বা একাধিক ডিভাইস টোকেনে `kakao:` প্রিফিক্স নেই |
| `Invalid parameter: platforms` | ম্যানুয়ালি প্ল্যাটফর্ম সেট করার চেষ্টা করা হয়েছে (অনুমোদিত নয়) |
| `Kakao template is required` | টেমপ্লেটের নাম প্রদান করা হয়নি |
| `Invalid Kakao template` | নির্দিষ্ট টেমপ্লেটটির অস্তিত্ব নেই |
| `Kakao template not approved` | টেমপ্লেটটি বিদ্যমান কিন্তু কাকাও দ্বারা অনুমোদিত নয় |
| `Please configure Kakao platform` | অ্যাপ্লিকেশনে কাকাও ক্রেডেনশিয়াল কনফিগার করা নেই |

</TabItem>

<TabItem label="500">

```json
{
  "status_code": 500,
  "status_message": "Internal server error"
}
```

</TabItem>
</Tabs>

### কোডের উদাহরণ

<Tabs>
<TabItem label="cURL">

```bash
curl -X POST "https://api.pushwoosh.com/json/1.3/createKakaoMessage" \
  -H "Content-Type: application/json" \
  -d '{
    "request": {
      "auth": "your-api-access-token",
      "application": "XXXXX-XXXXX",
      "notifications": [
        {
          "send_date": "now",
          "devices": ["kakao:user123@kakao.com", "kakao:device_abc"],
          "template": "welcome_message",
          "kakao_content_variables": {
            "user_name": "John Doe",
            "order_number": "12345"
          }
        }
      ]
    }
  }'
```

</TabItem>

<TabItem label="PHP">

```php
<?php
$url = 'https://api.pushwoosh.com/json/1.3/createKakaoMessage';

$data = [
    'request' => [
        'auth' => 'your-api-access-token',
        'application' => 'XXXXX-XXXXX',
        'notifications' => [
            [
                'send_date' => 'now',
                'devices' => ['kakao:user123@kakao.com', 'kakao:device_abc'],
                'template' => 'welcome_message',
                'kakao_content_variables' => [
                    'user_name' => 'John Doe',
                    'order_number' => '12345'
                ]
            ]
        ]
    ]
];

$options = [
    'http' => [
        'header'  => "Content-Type: application/json\r\n",
        'method'  => 'POST',
        'content' => json_encode($data)
    ]
];

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
```

</TabItem>

<TabItem label="Python">

```python
import requests

url = "https://api.pushwoosh.com/json/1.3/createKakaoMessage"

payload = {
    "request": {
        "auth": "your-api-access-token",
        "application": "XXXXX-XXXXX",
        "notifications": [
            {
                "send_date": "now",
                "devices": ["kakao:user123@kakao.com", "kakao:device_abc"],
                "template": "welcome_message",
                "kakao_content_variables": {
                    "user_name": "John Doe",
                    "order_number": "12345"
                }
            }
        ]
    }
}

response = requests.post(url, json=payload)
print(response.json())
```

</TabItem>
</Tabs>

### উদাহরণ: ডিভাইসের পরিবর্তে ব্যবহারকারীদের কাছে পাঠানো

```json
{
  "request": {
    "auth": "your-api-access-token",
    "application": "XXXXX-XXXXX",
    "notifications": [
      {
        "send_date": "now",
        "users": ["user_001", "user_002", "user_003"],
        "template": "promotion_alert",
        "kakao_content_variables": {
          "discount_percent": "20",
          "promo_code": "SAVE20"
        }
      }
    ]
  }
}
```

### উদাহরণ: নির্ধারিত বার্তা

```json
{
  "request": {
    "auth": "your-api-access-token",
    "application": "XXXXX-XXXXX",
    "notifications": [
      {
        "send_date": "2024-12-25 09:00:00",
        "devices": ["kakao:user123"],
        "template": "holiday_greeting"
      }
    ]
  }
}
```