স্কিপ করে মূল কন্টেন্ট এ যান

WhatsApp Template API

WhatsApp Template API icon
ডেভেলপার API

আপনার নিজস্ব সিস্টেম থেকে এক API কলে অনুমোদিত WhatsApp টেমপ্লেট পাঠান; এরপর কথোপকথন MonoChat-এ চলতে থাকে।

  • WhatsApp
  • REST API
  • শুধু API

ওভারভিউ​

WhatsApp Template API আপনার CRM, ERP, ই-কমার্স সাইট বা যেকোনো ব্যাকএন্ডকে MonoChat-এর মাধ্যমে গ্রাহকের কাছে একটি অনুমোদিত WhatsApp টেমপ্লেট মেসেজ পাঠাতে দেয়। একটি অনুরোধেই জানানো হয় কোন WhatsApp নম্বর থেকে পাঠানো হবে, গ্রাহকের ফোন নম্বর, টেমপ্লেট এবং তার ভেরিয়েবল।

গ্রাহক উত্তর দিলে কথোপকথন অন্য যেকোনো কথোপকথনের মতোই আপনার MonoChat ইনবক্সে আসে। অ্যাপটির নিজস্ব কোনো স্ক্রিন নেই: সবকিছু তিনটি API এন্ডপয়েন্টের মাধ্যমে হয়।

হাইলাইট​

  • একটি API কল। নাম ও ভাষা দিয়ে একটি টেমপ্লেট পাঠান, আপনার ডেটা থেকে হেডার, বডি, বোতাম ও ক্যারোসেল ভেরিয়েবল পূরণ করে।
  • সরাসরি চ্যাটে। প্রতিটি পাঠানোর ফলাফলে কথোপকথনের আইডি এবং MonoChat-এ সেটির সরাসরি লিংক আসে।
  • নতুন গ্রাহকদের স্বাগত। ফোন নম্বরটি এখনো গ্রাহক না হলে আপনার পাঠানো নামে গ্রাহক তৈরি হয়।

ইনস্টল ও সেট আপ​

  1. আপনার WhatsApp Business নম্বর MonoChat-এ সংযুক্ত করুন এবং নিশ্চিত করুন সেটি যাচাইকৃত ও Meta কর্তৃক অনুমোদিত টেমপ্লেট আছে।
  2. সেটিংস › MonoStore › অ্যাপ থেকে WhatsApp Template API ইনস্টল করুন, অথবা ইনস্টল লিংক app.monochat.ai/apps/K6u29LpbwCHBozZ8o খুলুন। MonoChat অ্যাকাউন্ট না থাকলে লিংকটি আগে সাইন আপ করার সুযোগ দেয় এবং আপনার জন্য অ্যাপটি ইনস্টল করে দেয়।
  3. প্রোফাইল › API টোকেন-এর অধীনে একটি API টোকেন তৈরি করুন। টোকেন শুধু একবারই দেখানো হয়, তাই সঙ্গে সঙ্গে কপি করে নিন।
  4. আপনার অনুমোদিত টেমপ্লেট ও তাদের ভেরিয়েবল দেখতে template/list.js কল করুন।
  5. আপনার প্রথম টেমপ্লেট পাঠাতে গ্রাহকের নম্বর ও ভেরিয়েবলের মান দিয়ে template/send.js কল করুন।
MonoChat সেটিংসে MonoStore অ্যাপের তালিকা, WhatsApp Template API-সহ
MonoStore-এ WhatsApp Template API-এর বিবরণ ও Install বোতাম
নোট
  • MonoChat থেকে পাঠানো যেকোনো টেমপ্লেট মেসেজের মতোই প্রতিটি মেসেজের বিল হয়।
  • WhatsApp ফাইলটি নামিয়ে না নেওয়া পর্যন্ত মিডিয়া URL সচল থাকতে হবে।
  • যেসব গ্রাহক আপনার কাছ থেকে বার্তা পেতে সম্মত হয়েছেন শুধু তাদের পাঠান: যেসব নম্বরের বার্তা ব্লক বা রিপোর্ট করা হয়, WhatsApp সেগুলোর ওপর সীমা আরোপ করতে পারে।

ফিচার​

টেমপ্লেটের তালিকা​

একটি WhatsApp নম্বরের অনুমোদিত টেমপ্লেট, তাদের ভাষা, ক্যাটাগরি, স্ট্যাটাস ও ভেরিয়েবলসহ, যাতে আপনার সিস্টেম জানে কী পাঠানো যায়।

টেমপ্লেট পাঠান​

টেমপ্লেটের নাম ও ভাষা দিয়ে, হেডার, বডি, বোতাম ও ক্যারোসেল ভেরিয়েবলসহ। কোনো মান বাদ পড়লে পাঠানো থেমে যায়, তাই অর্ধেক পূরণ করা কিছু গ্রাহকের কাছে পৌঁছায় না।

এজেন্টকে দায়িত্ব দিন​

একজন এজেন্টের ইমেইল দিন, কথোপকথনটি তাঁর নামে খোলা হবে।

মিডিয়া হেডার​

স্বল্পমেয়াদি আপলোড ক্রেডেনশিয়াল নিন, MonoChat-এর স্টোরেজে একটি ছবি, ভিডিও বা ডকুমেন্ট রাখুন এবং এর URL টেমপ্লেটের হেডার হিসেবে ব্যবহার করুন।

প্রতিটি পাঠানোর ফলাফলে সেশন আইডি, মেসেজ আইডি এবং MonoChat-এ কথোপকথন খোলার একটি লিংক আসে।

স্পষ্ট ত্রুটির বার্তা​

ব্যর্থ কল জানায় কী ভুল হয়েছে, যেমন “Channel not found” বা “Variable missing”।

শুরু করার আগে​

  • আপনার WhatsApp Business নম্বর MonoChat-এ সংযুক্ত ও যাচাইকৃত। দেখুন চ্যানেল।
  • আপনি যে টেমপ্লেটগুলো পাঠাতে চান সেগুলো Meta কর্তৃক অনুমোদিত। টেমপ্লেটের মাধ্যমেই আপনি আগে লিখতে পারেন, বা 24 ঘণ্টার উইন্ডোর বাইরে কোনো গ্রাহকের কাছে পৌঁছাতে পারেন। দেখুন টেমপ্লেট মেসেজ।
  • প্রোফাইল › API টোকেন থেকে নেওয়া একটি API টোকেন আপনার আছে। দেখুন API টোকেন।
  • আপনি আপনার টেন্যান্ট স্লাগ জানেন: আপনার MonoChat ঠিকানায় /tenants/-এর পরের অংশ। https://app.monochat.ai/tenants/mybusiness-এ স্লাগ হলো mybusiness।

API রেফারেন্স​

অ্যাপটির নিজস্ব কোনো স্ক্রিন নেই। সবকিছু তিনটি এন্ডপয়েন্টের মাধ্যমে হয়, প্রতিটি JSON বডিসহ একটি POST:

POST https://app.monochat.ai/api/<slug>/custom-functions/template-app/api/<endpoint>
Authorization: Bearer <API_TOKEN>
Content-Type: application/json
এন্ডপয়েন্টকী করে
template/list.jsআপনার একটি WhatsApp নম্বরের টেমপ্লেট ও তাদের ভেরিয়েবলের তালিকা দেয়।
template/send.jsগ্রাহকের কাছে একটি টেমপ্লেট পাঠায় এবং কথোপকথনের একটি লিংক ফেরত দেয়।
upload/get-token.jsহেডারের ছবি, ভিডিও বা ডকুমেন্টের জন্য স্বল্পমেয়াদি আপলোড ক্রেডেনশিয়াল দেয়।

ফোন নম্বর সবসময় কান্ট্রি কোডসহ এবং + ছাড়া লিখতে হয়, যেমন 905334445566। সফল কল 200 দিয়ে উত্তর দেয় এবং এন্ডপয়েন্টের ডেটা result-এর অধীনে থাকে।

1. টেমপ্লেটের তালিকা​

POST /api/<slug>/custom-functions/template-app/api/template/list.js

নির্দিষ্ট WhatsApp Business নম্বরের প্রতিটি টেমপ্লেট তালিকাভুক্ত করে: নাম, ভাষার কোড, ক্যাটাগরি, কম্পোনেন্ট (হেডার, বডি, ফুটার, বোতাম), ভেরিয়েবলের ধরন ও অনুমোদনের অবস্থা।

ফিল্ডআবশ্যকবিবরণ
phoneNumberহ্যাঁMonoChat-এ আপনার WhatsApp Business নম্বর, কান্ট্রি কোডসহ, + ছাড়া।
optionsনাপেজিং ও ফিল্টার, যেমন { "pagination": { "currentPage": 1, "pageItems": 50 } }।
POST /api/<slug>/custom-functions/template-app/api/template/list.js
Content-Type: application/json
Authorization: Bearer <API_TOKEN>

{
"phoneNumber": "905334445566"
}

রেসপন্স (সংক্ষিপ্ত):

{
"result": {
"templateMessages": [
{
"name": "new_product_announcement",
"languageCode": "tr-TR",
"category": "MARKETING",
"components": [
{
"type": "HEADER",
"format": "IMAGE",
"variables": [
{ "type": "IMAGE", "value": null, "exampleValue": "https://.../sample-image.png" }
]
},
{
"type": "BODY",
"text": "Merhaba {{1}}, yeni ürünümüz {{2}} çıktı!",
"sampleText": "Merhaba [Ayşe], yeni ürünümüz [XYZ Telefon] çıktı.",
"variables": [
{ "type": "TEXT", "value": null, "exampleValue": "[Ayşe]" },
{ "type": "TEXT", "value": null, "exampleValue": "[XYZ Telefon]" }
]
},
{
"type": "FOOTER",
"text": "Teşekkürler",
"sampleText": "Teşekkürler"
}
],
"status": "APPROVED"
}
],
"options": {
"pagination": { "totalCount": 12, "currentPage": 1, "pageItems": 12, "totalPages": 1 }
}
}
}

কীভাবে পড়বেন:

  • name: যে সিস্টেম নাম দিয়ে আপনি টেমপ্লেটটি পাঠান।
  • languageCode: যে ভাষায় এটি পাঠানো হবে।
  • category: WhatsApp ক্যাটাগরি (MARKETING, UTILITY, AUTHENTICATION)।
  • components: টেমপ্লেটটি যে অংশগুলো দিয়ে তৈরি।
কম্পোনেন্টবিষয়বস্তুবিবরণ
HEADERIMAGE, VIDEO, DOCUMENT বা টেক্সটমিডিয়ার ক্ষেত্রে format দেওয়া থাকে; ভেরিয়েবল variables-এর অধীনে আসে।
BODYভেরিয়েবলসহ টেক্সটমেসেজের মূল অংশ, {{1}}, {{2}}-এর মতো প্লেসহোল্ডারসহ।
FOOTERটেক্সটসাধারণত ভেরিয়েবল থাকে না।
BUTTONSURL, কুইক রিপ্লাই…বোতামের লেখা ও তাদের ভেরিয়েবল, থাকলে।

উপরের উদাহরণ টেমপ্লেটটির হেডারের জন্য একটি ছবি এবং বডির জন্য দুটি টেক্সট (গ্রাহকের নাম ও পণ্যের নাম) লাগে। ফুটার নির্দিষ্ট ("Teşekkürler") এবং কোনো বোতাম নেই।

2. টেমপ্লেট পাঠান​

POST /api/<slug>/custom-functions/template-app/api/template/send.js

গ্রাহকের কাছে একটি অনুমোদিত টেমপ্লেট পাঠায়। ফোন নম্বরটি এখনো গ্রাহক না হলে গ্রাহক তৈরি হয়; কথোপকথন খোলা হয় (বা আগেরটিই ব্যবহার হয়) এবং তাতে টেমপ্লেটটি পাঠানো হয়।

ফিল্ডআবশ্যকবিবরণ
phoneNumberহ্যাঁযে WhatsApp Business নম্বর থেকে পাঠানো হবে। এটি MonoChat-এ সংযুক্ত ও যাচাইকৃত হতে হবে।
templateMessageNameহ্যাঁটেমপ্লেটের name, তালিকা যেভাবে ফেরত দেয় ঠিক সেভাবে।
languageCodeহ্যাঁটেমপ্লেটের ভাষা, তালিকা যেভাবে ফেরত দেয় সেভাবে (যেমন tr-TR)।
customerPhoneNumberহ্যাঁগ্রাহকের WhatsApp নম্বর।
variablesটেমপ্লেটে ভেরিয়েবল থাকলেটেমপ্লেটের ভেরিয়েবলের মান (নিচে দেখুন)।
customerFirstName, customerLastNameনাগ্রাহক MonoChat-এ নতুন হলে ব্যবহৃত হয়।
agentEmailAddressনাএই ইমেইলের এজেন্টকে কথোপকথনটির দায়িত্ব দেয়।

ভেরিয়েবল। variables অ্যারের প্রতিটি আইটেমে একটি type এবং parameters-এর একটি তালিকা থাকে, টেমপ্লেটের প্লেসহোল্ডারের ক্রমে দেওয়া:

typeparameters
HEADERহেডারের টেক্সট ভেরিয়েবল, অথবা হেডারের ছবি, ভিডিও বা ডকুমেন্টের পাবলিক URL।
BODYবডির {{1}}, {{2}}, … ক্রমানুসারে।
BUTTONSভেরিয়েবল আছে এমন প্রতিটি বোতামের জন্য একটি মান (যেমন URL বোতামের পরিবর্তনশীল অংশ বা কুপন কোড), বোতামের ক্রমে।
CAROUSELparameters-এর বদলে একটি cards অ্যারে, প্রতিটি ক্যারোসেল কার্ডের জন্য একটি এন্ট্রি, প্রতিটিতে নিজস্ব components।
{ "type": "CAROUSEL", "cards": [ { "components": [ { "type": "HEADER", "parameters": ["https://…/1.jpg"] }, { "type": "BODY", "parameters": ["…"] } ] } ] }

কোনো মান বাদ পড়লে Variable missing দিয়ে পাঠানো থেমে যায়, তাই অর্ধেক পূরণ করা কিছু গ্রাহকের কাছে পৌঁছায় না। FOOTER-এ ভেরিয়েবল কদাচিৎ থাকে।

POST /api/<slug>/custom-functions/template-app/api/template/send.js
Content-Type: application/json
Authorization: Bearer <API_TOKEN>

{
"phoneNumber": "905334445566",
"templateMessageName": "new_product_announcement",
"languageCode": "tr-TR",
"customerPhoneNumber": "905306667788",
"customerFirstName": "Ayşe",
"agentEmailAddress": "sarah@yourcompany.com",
"variables": [
{ "type": "HEADER", "parameters": ["https://…/product.jpg"] },
{ "type": "BODY", "parameters": ["Ayşe", "XYZ Phone"] }
]
}

রেসপন্স:

{
"result": {
"url": "https://app.monochat.ai/tenants/<slug>?tab=messages&sessionTab=all&filter=…&_id=<sessionId>",
"sessionId": "…",
"messageId": "…"
}
}
  • url: MonoChat-এ কথোপকথন খোলে, যারা সাইন ইন করা আছেন এবং সেটি দেখার অনুমতি আছে তাদের জন্য।
  • sessionId: কথোপকথনের আইডি।
  • messageId: MonoChat-এ মেসেজের আইডি। এর ডেলিভারি ও পড়ার অবস্থা অন্য যেকোনো মেসেজের মতোই চ্যাটে দেখা যায়।

টেমপ্লেটে মিডিয়া। WhatsApp আপনার দেওয়া URL থেকে হেডার মিডিয়া নামিয়ে নেয়, তাই URL বৈধ ও সর্বসাধারণের জন্য পৌঁছানোর যোগ্য হতে হবে। লগইন লাগে এমন লিংক কাজ করে না। upload/get-token.js দিয়ে ফাইল আপলোড করলে সেই উত্তর থেকে তৈরি করা ফাইলের URL ব্যবহার করুন।

3. হেডারের জন্য মিডিয়া আপলোড​

POST /api/<slug>/custom-functions/template-app/api/upload/get-token.js

টেমপ্লেটের হেডার ছবি, ভিডিও বা ডকুমেন্ট হলে ফাইলটির একটি পাবলিক ঠিকানা দরকার, যেখান থেকে WhatsApp এটি নামাতে পারে। এই এন্ডপয়েন্ট আপনাকে MonoChat-এর স্টোরেজে ফাইল রাখার স্বল্পমেয়াদি অনুমতি দেয়।

ফিল্ডআবশ্যকবিবরণ
fileNameহ্যাঁএক্সটেনশনসহ ফাইলের নাম, যেমন product.jpg বা promo.pdf।

ফাইল সবসময় আপনার ওয়ার্কস্পেসের chat-assets ফোল্ডারে জমা হয়; key ফিল্ড পাঠায় এমন পুরোনো উদাহরণগুলো আগের মতোই কাজ করে, মানটির দরকার নেই।

POST /api/<slug>/custom-functions/template-app/api/upload/get-token.js
Content-Type: application/json
Authorization: Bearer <API_TOKEN>

{
"fileName": "product.jpg"
}

উত্তরে বলা হয় ফাইলটি কোথায় রাখতে হবে এবং তা করার ক্রেডেনশিয়াল দেওয়া হয়:

ফিল্ডবিবরণ
bucket, region, pathফাইলটি কোথায় যাবে।
temporaryCredentialsশুধু সেই একটি পাথের জন্য আপলোড-অনলি ক্রেডেনশিয়াল, 15 মিনিট বৈধ।
baseUrlস্টোরেজের পাবলিক ঠিকানা। ফাইলের URL হলো baseUrl + / + path।

এই ক্রেডেনশিয়াল দিয়ে যেকোনো S3 ক্লায়েন্ট ব্যবহার করে সঙ্গে সঙ্গে ফাইলটি আপলোড করুন, তারপর টেমপ্লেট পাঠানোর সময় এর URL HEADER প্যারামিটার হিসেবে দিন। অতি বড় ফাইল বা WhatsApp সমর্থন করে না এমন ফরম্যাট ব্যর্থ হয় (এটি প্রচলিত ছবি, ভিডিও ও PDF ফরম্যাট গ্রহণ করে)।

উদাহরণ: ছবির হেডারসহ একটি টেমপ্লেট​

ধরুন আপনার একটি অনুমোদিত টেমপ্লেট new_product_announcement আছে, যার একটি ছবির হেডার ও দুটি বডি ভেরিয়েবল (গ্রাহকের নাম ও পণ্যের নাম), এবং আপনি এটি কোনো গ্রাহককে পাঠাতে চান।

  1. টেমপ্লেটের তালিকা নিন। আপনার WhatsApp নম্বর দিয়ে template/list.js কল করুন এবং new_product_announcement খুঁজে নিন। এর কম্পোনেন্টে হেডারে একটি IMAGE ভেরিয়েবল এবং বডিতে দুটি TEXT ভেরিয়েবল দেখা যাবে।
  2. ছবি আপলোড করুন। { "fileName": "urun.jpg" } দিয়ে upload/get-token.js কল করুন, ফেরত আসা ক্রেডেনশিয়াল দিয়ে ফাইল আপলোড করুন এবং baseUrl ও path থেকে এর URL তৈরি করুন।
  3. টেমপ্লেট পাঠান। ফাইলের URL HEADER প্যারামিটার হিসেবে এবং BODY প্যারামিটার হিসেবে ["Ayşe", "XYZ Telefon"] দিয়ে template/send.js কল করুন ({{1}} → Ayşe, {{2}} → XYZ Telefon)। টেমপ্লেটে বোতামের ভেরিয়েবল থাকলে একইভাবে একটি BUTTONS আইটেম যোগ করতে হতো।
  4. চ্যাট খুলুন। উত্তরের url কথোপকথন খোলে; গ্রাহক উত্তর দিলে তা আপনার MonoChat ইনবক্সে চলতে থাকে।

ত্রুটি​

ব্যর্থ কল একটি ত্রুটির স্ট্যাটাস ও কী ভুল হয়েছে তা বলে দেওয়া একটি বার্তা দিয়ে উত্তর দেয়। এই বার্তাগুলো আপনার সিস্টেমে লগ করুন এবং প্রয়োজনে আপনার ব্যবহারকারীদের অর্থবহ বার্তা দেখান।

বার্তাকারণ
phoneNumber field is requiredphoneNumber ছাড়াই template/list.js কল করা হয়েছে।
phoneNumber, templateMessageName, customerPhoneNumber fields are requiredtemplate/send.js-এর একটি আবশ্যক ফিল্ড নেই।
Channel not foundphoneNumber আপনার ওয়ার্কস্পেসের কোনো WhatsApp নম্বর নয়।
Channel is not verifiedWhatsApp নম্বরটি সংযুক্ত কিন্তু যাচাইকৃত নয়।
Template message not foundনম্বরটিতে সেই নাম ও ভাষার কোনো অনুমোদিত টেমপ্লেট নেই। বানান ও languageCode দেখে নিন।
Template message is not approvedটেমপ্লেটটি আছে কিন্তু Meta কর্তৃক অনুমোদিত নয়।
Variable missing: …variables টেমপ্লেটের সঙ্গে মেলে না, যেমন টেমপ্লেটে দুটি বডি মান লাগে কিন্তু আপনি একটি পাঠিয়েছেন।
Agent user not foundagentEmailAddress-এর ইমেইলের কোনো এজেন্ট নেই।
Customer Channel not foundগ্রাহকের WhatsApp পরিচয় তৈরি বা খুঁজে পাওয়া যায়নি।

আপনি যেসব HTTP স্ট্যাটাস কোড দেখতে পারেন:

  • 401 Unauthorized: Authorization: Bearer <API_TOKEN> হেডার নেই, অথবা টোকেন ভুল বা মেয়াদোত্তীর্ণ। আপনার অ্যাকাউন্ট থেকে একটি বৈধ টোকেন ব্যবহার করুন।
  • 403 Forbidden: টোকেনটির এই ওয়ার্কস্পেস বা অ্যাপে অ্যাক্সেস নেই, যেমন টেন্যান্ট স্লাগ ভুল।
  • 404 Not Found: এন্ডপয়েন্টের ঠিকানা ভুল। পূর্ণ পাথ /api/<slug>/custom-functions/template-app/api/... দেখে নিন।
  • 500 Internal Server Error: MonoChat বা WhatsApp প্রদানকারীর দিকে অপ্রত্যাশিত সমস্যা, অথবা WhatsApp-এর দিক থেকে প্রত্যাখ্যান (নম্বরটি WhatsApp-এ নেই, গ্রাহক আপনাকে ব্লক করেছেন, কোয়ালিটি বা রেট সীমা)। পরে আবার চেষ্টা করুন এবং সমস্যা থাকলে MonoChat সাপোর্টের সঙ্গে যোগাযোগ করুন।

স্ক্রিনশট​

FAQ​

WhatsApp Template API-তে কি ইউজার ইন্টারফেস আছে?​

না। এটি শুধু API-ভিত্তিক অ্যাপ, যার তিনটি এন্ডপয়েন্ট: টেমপ্লেটের তালিকা, টেমপ্লেট পাঠানো এবং মিডিয়া হেডারের জন্য আপলোড ক্রেডেনশিয়াল নেওয়া।

ব্যবহার করার আগে আমার কী লাগবে?​

MonoChat-এ যুক্ত ও যাচাইকৃত একটি WhatsApp Business নম্বর, Meta কর্তৃক অনুমোদিত টেমপ্লেট এবং প্রোফাইল › API টোকেন থেকে নেওয়া একটি API টোকেন।

গ্রাহক উত্তর দিলে কী হয়?​

কথোপকথন অন্য যেকোনো কথোপকথনের মতোই আপনার MonoChat ইনবক্সে আসে। প্রতিটি পাঠানোর ফলাফলে কথোপকথনের একটি সরাসরি লিংকও আসে, এবং আপনি ইমেইল দিয়ে এটি কোনো এজেন্টকে দায়িত্ব দিতে পারেন।

আমি কি এমন নম্বরে পাঠাতে পারি যা এখনো গ্রাহক নয়?​

হ্যাঁ। ফোন নম্বরটি এখনো গ্রাহক না হলে আপনার পাঠানো নামে গ্রাহক তৈরি হয়।

টেমপ্লেট মেসেজের খরচ কত?​

MonoChat থেকে পাঠানো যেকোনো টেমপ্লেট মেসেজের মতোই প্রতিটি মেসেজের বিল হয়। Meta ক্যাটাগরি ও প্রাপকের দেশ অনুযায়ী টেমপ্লেটের মূল্য নির্ধারণ করে; একটি পাঠানোর খরচ অনুমান করতে WhatsApp বাল্ক মেসেজিং খরচের ক্যালকুলেটর ব্যবহার করুন।