C cenaly.com
ফ্রিতে শুরু করুন

নিজস্ব PBX-এর API এবং MCP

কি এবং পারমিশন, REST API, Claude ও Cursor-এর জন্য MCP সার্ভার, কি ছাড়াই OAuth দিয়ে ChatGPT এবং claude.ai সংযোগ, উদাহরণ, লিমিট ও এরর

On this page 10

নিজের PBX-এর API ও MCP

আপনার নিজের PBX Cenaly আপনার প্রোগ্রাম ও AI সহায়কদের জন্য উন্মুক্ত:

  • CRM, হিসাব সিস্টেম, নিজের সাইট — REST API: কল লগ, রেকর্ডিং ও প্রতিলিপি, ক্লিক-টু-কল, এক্সটেনশন, ফরওয়ার্ডিং, কলের নিয়ম;
  • Claude Code, Claude Desktop, Cursor — কী দিয়ে রিমোট MCP সার্ভার;
  • ChatGPT, claude.ai, Perplexity, Cursor ও VS Code — একই MCP সার্ভার কী ছাড়াই: আপনি নিজের অ্যাকাউন্টে লগইন করে অ্যাক্সেস অনুমোদন করেন (OAuth)।

সবকিছু অ্যাকাউন্ট মালিকের নামে এবং শুধু তিনি যে অনুমতি দিয়েছেন তা দিয়েই কাজ করে। প্রতিটি পরিবর্তন PBX-এর অ্যাকশন লগে কী বা অ্যাপের নামসহ দেখা যায়।

ঠিকানা#

কী ঠিকানা
REST API https://api.cenaly.com/pbx-api/v1
MCP সার্ভার (streamable HTTP) https://api.cenaly.com/pbx-api/mcp
মেথডের ডকুমেন্টেশন api.cenaly.com/pbx-api/v1/docs
OpenAPI 3.1 বর্ণনা api.cenaly.com/pbx-api/v1/openapi.json
OAuth মেটাডেটা https://api.cenaly.com/.well-known/oauth-authorization-server/pbx-api

কী ও অনুমতি#

কী তৈরি করেন শুধু অ্যাকাউন্ট মালিক: টেলিফোনি → API ও MCP → কী → কী তৈরি করুন। «PBX অ্যাডমিনিস্ট্রেটর» ভূমিকার কর্মী কী দেখতে পান না — কী মালিকের নামে কাজ করে।

  • cpx_… ধরনের কী একবারই দেখানো হয় — তৈরির সাথে সাথেই, সংযোগের জন্য প্রস্তুত স্নিপেটসহ। আমাদের কাছে শুধু তার ফিঙ্গারপ্রিন্ট (SHA-256) সংরক্ষিত থাকে, কী পুনরুদ্ধার করা যায় না — শুধু নতুন ইস্যু করা যায়।
  • কী শাখা (নাহলে — সব শাখা, ভবিষ্যতেরগুলোসহ) এবং মেয়াদ (30, 90, 365 দিন বা অনির্দিষ্টকাল) দিয়ে সীমাবদ্ধ করা যায়।
  • «অনুমতি» কী-এর অনুমতি ও শাখা তাৎক্ষণিকভাবে বদলায়: ইন্টিগ্রেশন কাজ করতে থাকে, নতুন অনুমতি পরের অনুরোধ থেকেই কার্যকর হয়।
  • «প্রত্যাহার» — সাথে সাথে ও চিরতরে: এই কী দিয়ে পরের অনুরোধ 401 পাবে।
  • সক্রিয় কী ও সংযোগ — প্রতি অ্যাকাউন্টে সর্বোচ্চ 20টি।

অনুমতি রেডিমেড সেট বা চেকবক্স দিয়ে বেছে নেওয়া হয়:

অনুমতি কী দেয় সেট
calls:read কল লগ ও রুটসহ কল কার্ড CRM, AI সহায়ক, শুধু পড়া, সব
recordings:read কথোপকথনের রেকর্ডিংয়ের লিংক (10 মিনিট) ও প্রতিলিপি CRM, AI সহায়ক, শুধু পড়া, সব
calls:dial ক্লিক-টু-কল: প্রথমে কর্মীর ফোন বাজে, উত্তর দেওয়ার পর PBX নম্বর ডায়াল করে CRM, AI সহায়ক, সব
extensions:read এক্সটেনশন, গ্রুপ, ফরওয়ার্ডিং, «বিরক্ত করবেন না» CRM, AI সহায়ক, শুধু পড়া, সব
extensions:write ব্যক্তিগত ফরওয়ার্ডিং ও «বিরক্ত করবেন না» বদলানো AI সহায়ক, সব
presence:read কে ফ্রি, কে বাজছে, কে কথা বলছে AI সহায়ক, শুধু পড়া, সব
reports:read নির্দিষ্ট সময়ের কল সেন্টার মেট্রিক: সার্ভিস লেভেল, অপেক্ষা, পরিত্যক্ত, AHT, FCR, CSAT, কোথায় কল হারাচ্ছি, কিউ, লাইন, কর্মী অনুযায়ী বিভাজন শুধু পড়া, সব
routes:read নম্বর, ইনকামিং ও আউটগোয়িং নিয়ম, নিয়মের ইতিহাস শুধু পড়া, সব
routes:write কলের নিয়ম তৈরি, বদল, মুছে ফেলা ও পুনর্বিন্যাস, ইতিহাস থেকে রোলব্যাক শুধু আলাদা চেকবক্সে
config:export PBX সেটিংস ফাইল আকারে এক্সপোর্ট শুধু আলাদা চেকবক্সে
config:import টেবিল থেকে সেটিংস ইমপোর্ট: প্রিভিউ, তারপর প্রয়োগ শুধু আলাদা চেকবক্সে
webhooks:write কল ইভেন্টের ওয়েবহুক তৈরি, বদল, যাচাই ও মুছে ফেলা শুধু আলাদা চেকবক্সে
daynight:write দিনের শেষ পর্যন্ত বা নির্দিষ্ট তারিখ পর্যন্ত শাখা বন্ধ করা, খোলা — ফোন থেকে *28-এর মতোই শুধু আলাদা চেকবক্সে

যে অনুমতিগুলো কিছু বদলায় বা মিনিট খরচ করে, সেগুলো উইন্ডোতে অ্যাম্বার রঙে চিহ্নিত। শেষ তিনটি অনুমতি কোনো সেটেই নেই, এমনকি «সব»-তেও না — সেগুলো শুধু সচেতনভাবে, আলাদা চেকবক্সে দেওয়া যায়।

ChatGPT, claude.ai, Perplexity, Cursor, VS Code: কী ছাড়া সংযোগ#

ক্লাউড সহায়করা হেডারে কী বসাতে পারে না — তারা OAuth দিয়ে MCP সার্ভার সংযুক্ত করে। কী তৈরি করার দরকার নেই।

claude.ai: সেটিংস → কানেক্টর → নিজের কানেক্টর যোগ করুন → https://api.cenaly.com/pbx-api/mcp পেস্ট করুন → সংযুক্ত করুন।

ChatGPT: সেটিংস → অ্যাপ ও কানেক্টর → অ্যাডভান্সড → ডেভেলপার মোড চালু করুন → তৈরি করুন → https://api.cenaly.com/pbx-api/mcp পেস্ট করুন, অথেন্টিকেশন — OAuth।

Perplexity: অ্যাকাউন্ট সেটিংস → কানেক্টর → «+ নিজের কানেক্টর» → রিমোট → https://api.cenaly.com/pbx-api/mcp পেস্ট করুন, অথেন্টিকেশন — OAuth।

Cursor ও VS Code: কী-এর হেডার ছাড়া https://api.cenaly.com/pbx-api/mcp ঠিকানার রিমোট (HTTP) MCP সার্ভার যোগ করুন — লগইন উইন্ডো ব্রাউজারে খুলবে। Cursor-এ: .cursor/mcp.json → {"mcpServers": {"cenaly-pbx": {"url": "https://api.cenaly.com/pbx-api/mcp"}}}; VS Code-এ: «MCP: Add Server» কমান্ড → HTTP।

এরপর সহায়ক Cenaly-র লগইন উইন্ডো খুলবে। লগইনের পর আপনি দেখবেন:

  • কে অ্যাক্সেস চাইছে — অ্যাপের নাম হয় যে ঠিকানায় উত্তর ফিরবে তা দিয়ে: «যাচাইকৃত কানেক্টর · chatgpt.com» (একইভাবে — claude.ai, perplexity.ai, vscode.dev, Cursor), «এই কম্পিউটারের প্রোগ্রাম» বা সতর্কতা «অপরিচিত ঠিকানা»। অ্যাপ যে নাম পাঠিয়েছে তা ছোট করে দেখানো হয় — যে কেউ তা লিখতে পারে;
  • অনুমতি — অ্যাপ যা চাইছে তা চিহ্নিত (যদি সে «সব কিছু» চায়, «AI সহায়ক» সেট চিহ্নিত হয়); «শুধু আলাদা চেকবক্সে» অনুমতিগুলো আগে থেকে কখনো চিহ্নিত হয় না;
  • শাখা — সব বা নির্বাচিত।

«অনুমোদন করুন» আপনাকে সহায়কে ফিরিয়ে নেয়, এবং সে সাথে সাথেই PBX-এর টুল দেখতে পায়। সংযোগটি টেলিফোনি → API ও MCP → কী-তে OAuth লেবেল ও অ্যাপের ঠিকানাসহ একটি লাইন হিসেবে দেখা যায় — সেখানেই অনুমতি বদলানো ও অ্যাক্সেস প্রত্যাহার করা যায়। একই অ্যাপের পুনঃসংযোগ তার অনুমতি হালনাগাদ করে, দ্বিতীয় সংযোগ তৈরি করে না।

সংযোগ অনুমোদন করতে পারেন শুধু অ্যাকাউন্ট মালিক।

Claude Code, Claude Desktop, Cursor: কী দিয়ে সংযোগ#

Claude Code — একটি কমান্ডেই:

claude mcp add --transport http telephony https://api.cenaly.com/pbx-api/mcp --header "Authorization: Bearer cpx_…"

Claude Desktop, Cursor (.cursor/mcp.json) এবং সেটিংস ফাইলযুক্ত অন্যান্য ক্লায়েন্ট:

{
  "mcpServers": {
    "telephony": {
      "type": "http",
      "url": "https://api.cenaly.com/pbx-api/mcp",
      "headers": { "Authorization": "Bearer cpx_…" }
    }
  }
}

আপনার কী দিয়ে তৈরি রেডিমেড স্নিপেট কী তৈরির সঙ্গে সঙ্গেই দেখানো হয়। AI সহায়ক কেবল কী দ্বারা অনুমোদিত টুলগুলোই দেখে এবং উত্তর দিতে পারে «আজ কে ফোন করেছিল এবং সংযোগ হয়নি», «আন্নার ফোন থেকে এই অতিথিকে আবার ফোন করুন», «আমার জন্য মোবাইলে ফরওয়ার্ডিং চালু করুন»।

REST API#

কী — Authorization: Bearer <কী> হেডারে (অথবা X-Api-Key)। কী-এর একটি শাখা থাকলে location প্যারামিটার পাঠানোর প্রয়োজন নেই; একাধিক থাকলে 400 location_required উত্তর সেগুলো তালিকাভুক্ত করবে।

মেথড পাথ অনুমতি কী করে
GET /v1/me — কী-এর অনুমতি, শাখা ও সীমা
GET /v1/locations — কী-এর শাখা ও তাদের পাবলিক সুইচড টেলিফোনি
GET /v1/calls calls:read কল লগ: since, until, direction, status (answered, missed, ai), number, extension, limit 100 পর্যন্ত, cursor
GET /v1/calls/{id} calls:read রুটসহ কল: কোন নিয়ম কাজ করেছে, কার ফোন বেজেছে, কে উত্তর দিয়েছে
GET /v1/calls/{id}/recording recordings:read 10 মিনিটের জন্য রেকর্ডিংয়ের লিংক
GET /v1/calls/{id}/transcript recordings:read কথোপকথনের প্রতিলিপি ও সারসংক্ষেপ
POST /v1/dial calls:dial এক ক্লিকে কল: { "extension": "101", "number": "+995555123456" }
GET /v1/dial/{commandId} calls:dial এক ক্লিকে কল কেমন চলছে
GET /v1/extensions extensions:read এক্সটেনশন, গ্রুপ, ফরওয়ার্ডিং, «বিরক্ত করবেন না»
PUT /v1/extensions/{ext}/forwarding extensions:write এক্সটেনশনের ব্যক্তিগত ফরওয়ার্ডিং
PUT /v1/extensions/{ext}/dnd extensions:write «বিরক্ত করবেন না»: { "on": true }
GET /v1/presence presence:read এই মুহূর্তে কে ফাঁকা আছেন
GET /v1/metrics reports:read নির্দিষ্ট সময়ের জন্য কল সেন্টারের মেট্রিক: from, to (শাখার স্থানীয় তারিখ YYYY-MM-DD, ডিফল্ট — শেষ 7 দিন), compare (prev, year, prev,year বা খালি), sections (metrics,loss,queues,lines,operators,directions,heatmap,daily), callbacks=true — আবার ফোন করার গতিও
GET /v1/routes routes:read নম্বর, ইনকামিং ও আউটগোয়িং নিয়ম
GET /v1/routes/history routes:read নিয়ম পরিবর্তনের ইতিহাস
POST, PUT, DELETE /v1/routes/inbound…, /v1/routes/outbound… routes:write কলের নিয়ম এক এক করে: তৈরি, পাঠানো ফিল্ড পরিবর্তন, মুছে ফেলা, পুনর্বিন্যাস, রোলব্যাক
GET, POST /v1/config/export, /v1/config/import config:export, config:import ফাইল ফরম্যাটে সেটিংস; আপলোড — প্রিভিউ, তারপর প্রয়োগ
GET /v1/events calls:read শাখার 7 দিনের কল ইভেন্ট (2000 পর্যন্ত): since (ইভেন্ট আইডি বা সময়), types, limit (প্রতি উত্তরে 500 পর্যন্ত)
GET, POST, PATCH, DELETE /v1/webhooks… webhooks:write ওয়েবহুক: তালিকা, তৈরি, পরিবর্তন, মুছে ফেলা; …/rotate-secret, …/test, …/deliveries
GET, PUT /v1/open-closed routes:read, daynight:write বন্ধ কি না এবং কতক্ষণ পর্যন্ত; দিনের শেষ পর্যন্ত বন্ধ { "closed": true }, নির্দিষ্ট তারিখ পর্যন্ত { "closed": true, "until": "2026-10-05T09:00" } বা খোলা

ফিল্ডের সম্পূর্ণ বিবরণ — ডকুমেন্টেশন পৃষ্ঠায় এবং OpenAPI-তে।

আজ কে ফোন করেছিল এবং সংযোগ হয়নি:

curl -H "Authorization: Bearer cpx_…" \
  "https://api.cenaly.com/pbx-api/v1/calls?status=missed&since=$(date -u +%Y-%m-%dT00:00:00Z)"

এক্সটেনশন 101-এর ফোন থেকে গ্রাহককে আবার ফোন করুন:

curl -X POST -H "Authorization: Bearer cpx_…" -H "Content-Type: application/json" \
  -d '{"extension":"101","number":"+995555123456"}' "https://api.cenaly.com/pbx-api/v1/dial"

গত বছরের আগস্ট ও সেপ্টেম্বরের সঙ্গে তুলনাসহ সেপ্টেম্বরের মেট্রিক — নিজের BI প্যানেলের জন্য:

curl -H "Authorization: Bearer cpx_…" \
  "https://api.cenaly.com/pbx-api/v1/metrics?from=2026-09-01&to=2026-09-30&compare=prev,year"

উত্তরে metrics — টেলিফোনি → কল লগ → অ্যানালিটিক্স স্ক্রিনের মতোই একই সংখ্যা: ইনকামিং, গৃহীত ও মিসড, সার্ভিস লেভেল (থ্রেশহোল্ড ও লক্ষ্য — কিউ সেটিংস থেকে), গড় ও সর্বোচ্চ অপেক্ষা, সংক্ষিপ্ত কল ছাড়া পরিত্যক্তের অনুপাত, AHT, FCR, ট্রান্সফার ও বটের অনুপাত, CSAT। compare.prev এবং compare.year — আগের সময়ের এবং এক বছর আগের একই সময়ের একই ফিল্ড। গত বছরের সঙ্গে তুলনা 400 দিন পর্যন্ত সময়ের জন্য গণনা করা হয়।

কর্মী 15 সেকেন্ডে উত্তর না দিলে মোবাইলে ফরওয়ার্ডিং চালু করুন:

curl -X PUT -H "Authorization: Bearer cpx_…" -H "Content-Type: application/json" \
  -d '{"forward":{"noAnswer":{"kind":"number","number":"+995599000111"},"noAnswerSec":15}}' \
  "https://api.cenaly.com/pbx-api/v1/extensions/101/forwarding"

MCP টুল#

REST-এর মতো একই অপারেশন। ক্লায়েন্ট শুধু সেই টুলগুলোই দেখে, যেগুলো কী বা সংযোগে অনুমোদিত:

টুল অনুমতি
list_locations —
list_calls, get_call calls:read
get_call_recording, get_call_transcript recordings:read
call_number, get_dial_status calls:dial
list_extensions extensions:read
set_forwarding, set_do_not_disturb extensions:write
get_presence presence:read
get_call_metrics reports:read
list_routes, list_route_history routes:read
save_inbound_rule, delete_inbound_rule, move_inbound_rule, save_outbound_rule, delete_outbound_rule, move_outbound_rule, set_outbound_calls, restore_route_version routes:write
export_config config:export
import_config config:import
get_call_events calls:read
list_webhooks, save_webhook, delete_webhook, rotate_webhook_secret, test_webhook, list_webhook_deliveries webhooks:write
get_open_closed routes:read
set_open_closed daynight:write

সার্ভার সেশন ছাড়াই কাজ করে (streamable HTTP, JSON-RPC 2.0): initialize, tools/list, tools/call।

নিজের কানেক্টরের ডেভেলপারদের জন্য OAuth#

অথরাইজেশন সার্ভার MCP অথরাইজেশন স্পেসিফিকেশন মেনে চলে — যে কোনো ক্লায়েন্ট, যা এটি সমর্থন করে, কাজ করবে:

  1. টোকেন ছাড়া MCP-তে অনুরোধ করলে 401 পাওয়া যায়, হেডারসহ WWW-Authenticate: Bearer resource_metadata="https://api.cenaly.com/.well-known/oauth-protected-resource/pbx-api/mcp"।
  2. রিসোর্স মেটাডেটা (RFC 9728) অথরাইজেশন সার্ভারের নাম দেয় — https://api.cenaly.com/pbx-api; তার মেটাডেটা (RFC 8414) — ঠিকানায় https://api.cenaly.com/.well-known/oauth-authorization-server/pbx-api (এবং …/pbx-api/.well-known/openid-configuration)।
  3. ক্লায়েন্টের ডাইনামিক রেজিস্ট্রেশন (RFC 7591): POST /pbx-api/oauth/register. রিটার্ন ঠিকানা — শুধু localhost / 127.0.0.1 (যেকোনো পোর্ট) বা পরিচিত কানেক্টরের ঠিকানা (claude.ai, claude.com, chatgpt.com, chat.openai.com, vscode.dev, www.perplexity.ai, enterprise.perplexity.ai; Cursor-এর ক্ষেত্রে — আরও ঠিক cursor://anysphere.cursor-mcp/oauth/callback)। ক্লায়েন্টের লগইন পদ্ধতি — none (পাবলিক ক্লায়েন্ট), client_secret_post বা client_secret_basic।
  4. PKCE-সহ অথরাইজেশন কোড (শুধু S256): GET /pbx-api/oauth/authorize → মালিকের লগইন ও সম্মতির উইন্ডো → আপনার ঠিকানায় code, state এবং iss সহ ফেরত। resource প্যারামিটার — MCP সার্ভারের ঠিকানা।
  5. টোকেন: POST /pbx-api/oauth/token. কোড একবারই ব্যবহারযোগ্য এবং 2 মিনিট টেকে (ভুল code_verifier এটি বাতিল করে); অ্যাক্সেস টোকেন — 1 ঘণ্টা; রিফ্রেশ টোকেন — 90 দিন, প্রতিবার রিফ্রেশে নতুনটি দেওয়া হয়, আগেরটি কাজ করা বন্ধ করে।
  6. রিভোক: POST /pbx-api/oauth/revoke (RFC 7009) সংযোগটি সম্পূর্ণ বাতিল করে — যেমন «API এবং MCP» উইন্ডোতে «প্রত্যাহার»।

অ্যাক্সেস টোকেন যেখানেই কী কাজ করে, সেখানেই গৃহীত হয়: MCP-তে এবং REST-এ, মালিক যে অনুমতি ও শাখা অনুমোদন করেছেন সেগুলোসহ।

সীমা ও ত্রুটি#

  • প্রতি কী বা সংযোগে: মিনিটে 120 অনুরোধ এবং দিনে 20 000 (REST ও MCP একসাথে)।
  • ক্লিক-টু-কল — আলাদাভাবে: মিনিটে 10 এবং দিনে 300।
  • জার্নাল — প্রতি অনুরোধে 100 কল পর্যন্ত; PBX-এর শাখার জার্নালে — শেষ 400 কল, 90 দিনের মধ্যে।
কোড ত্রুটি কী করবেন
401 api_key_missing, api_key_invalid কী নেই, প্রত্যাহৃত বা মেয়াদোত্তীর্ণ; OAuth টোকেনের মেয়াদ শেষ — রিফ্রেশ করুন
403 scope_required কী-তে অনুমতি নেই — «অনুমতি»-তে যোগ করুন
400 location_required কী-তে একাধিক শাখা — location পাঠান
404 location_not_found শাখা নেই বা কী অন্য শাখায় সীমাবদ্ধ
429 rate_limited সীমা শেষ, Retry-After সেকেন্ড পরে আবার চেষ্টা করুন

কল ইভেন্ট#

রিয়েল টাইমে — PBX ওয়েবহুক: টেলিফোনি → API এবং MCP → ওয়েবহুক অথবা webhooks:write অনুমতিসহ কী দিয়ে POST /v1/webhooks। আপনার https-ঠিকানায় সেকেন্ডের মধ্যে প্রতিটি ইভেন্টের জন্য POST আসে: call.started (শুরু হয়েছে: দিক, কে, কোথায়, লাইন), call.ringing (কার কাছে বাজছে — প্রতিটি ফোনের জন্য একটি করে), call.answered (কে উত্তর দিয়েছে), call.transferred (কে এবং কাকে স্থানান্তর করেছে), call.ended (ফলাফল, সময়কাল, কথোপকথন, কে উত্তর দিয়েছে)। ওয়েবহুক শাখা এবং ইভেন্টের ধরন দ্বারা সীমাবদ্ধ করা যায়।

{ "id": "1727771234.56:2", "type": "call.answered", "createdAt": "2026-10-01T10:00:05Z",
  "locationId": "…", "webhookId": "wh_…", "attempt": 1,
  "data": { "callId": "1727771234.56", "seq": 2, "direction": "inbound",
            "from": { "number": "+995555123456" }, "party": { "extension": "101", "name": "Анна" } } }

স্বাক্ষর — হেডার X-Cenaly-Signature: t=<ইউনিক্স সময়>,v1=<"t.বডি"-এর HMAC-SHA256 ওয়েবহুকের সিক্রেট দিয়ে>। পুনরায় গণনা করুন, ধ্রুবক সময়ে তুলনা করুন এবং ৫ মিনিটের বেশি পুরনো t প্রত্যাখ্যান করুন। সিক্রেট whsec_… একবারই দেখানো হয়; «নতুন সিক্রেট» আগেরটি সাথে সাথে বাতিল করে।

ডেলিভারি — ১০ সেকেন্ডের মধ্যে 2xx উত্তর দিন। অন্যথায় ১০ সেকেন্ড, ৩০ সেকেন্ড, ২, ৫, ১০, ১৫ এবং ১৫ মিনিট বিরতিতে পুনরায় পাঠাই (৮টি চেষ্টা, প্রায় এক ঘণ্টা); পুনঃপ্রেরণে একই id থাকে — এটি দিয়ে ডুপ্লিকেট বাদ দিন। ডেলিভারি লগ (প্রতিক্রিয়া কোড, সময়, চেষ্টা) — ওয়েবহুক উইন্ডোতে এবং GET /v1/webhooks/{id}/deliveries-এ; «পরীক্ষা করুন» একটি পরিষেবা webhook.ping পাঠায়। ঠিকানা টানা ৩ দিন কোনো ডেলিভারি গ্রহণ না করলে — ওয়েবহুক নিজে থেকে বন্ধ হয়ে যায়: মালিকের কাছে ইমেইল আসে, «ওয়েবহুক» উইন্ডোতে — «স্বয়ংক্রিয়ভাবে বন্ধ» চিহ্ন এবং «চালু করুন» বোতাম (অথবা { "enabled": true } সহ PATCH /v1/webhooks/{id})।

নিজের সার্ভার ছাড়া — একই ফিড পোলিং করে: GET /v1/events?since=<শেষ ইভেন্টের id> অথবা MCP টুল get_call_events (শাখার ইভেন্ট গত ৭ দিনের, সর্বোচ্চ ২০০০; প্রতি উত্তরে — সর্বোচ্চ ৫০০, more: true — একই since দিয়ে আরও পাতা দেখুন)।

রেকর্ডিং প্রক্রিয়াকরণের পরে — ট্রান্সক্রিপশন ও বিশ্লেষণসহ কল «ওয়েবহুক» সোর্সের ওয়েবহুক দিয়ে «কল» বিভাগে আসে।

«খোলা / বন্ধ» — { "closed": true } সহ PUT /v1/open-closed শাখাটি দিনের শেষ পর্যন্ত বন্ধ করে (ফোন থেকে *28-এর মতো: কল «ঘণ্টার বাইরে» নিয়মে চলে), false — খোলে; GET দেখায় বন্ধ কি না এবং কে করেছে। "until" সহ — সেই মুহূর্ত পর্যন্ত বন্ধ (সর্বোচ্চ ৩০ দিন), তারপর নিজে থেকে খুলে যাবে: অফসেট ছাড়া সময় (2026-10-05T09:00) শাখার টাইমজোনে পড়া হয়; false এটিও বাতিল করে। রাউটিংয়ে «*28 কোড দিয়ে বন্ধ করুন» চেকবক্স চালু থাকা প্রয়োজন (অন্যথায় 409)।

নিরাপত্তা#

  • কী একবারই দেখানো হয় এবং আমাদের কাছে শুধু ফিঙ্গারপ্রিন্ট হিসেবে সংরক্ষিত থাকে; ফাঁস হওয়া কী একটি বোতামে প্রত্যাহার করা যায়।
  • OAuth সংযোগ শুধু মালিক অনুমোদন করতে পারেন, এবং কোন ঠিকানায় অ্যাক্সেস যাচ্ছে তা দেখা যায়; অনুমোদিত সংযোগ অনুমতি ও শাখা দ্বারা সীমাবদ্ধ করা যায় এবং যেকোনো সময় প্রত্যাহার করা যায়।
  • ফোন নম্বর — আপনার ক্লায়েন্টদের ব্যক্তিগত ডেটা: শুধু সেই ইন্টিগ্রেশনগুলিকে জার্নাল ও রেকর্ডিংয়ের অনুমতি দিন, যাদের সত্যিই প্রয়োজন।
  • কী বা সংযোগের মাধ্যমে সব পরিবর্তন — PBX-এর অ্যাকশন লগে কী বা অ্যাপের নামসহ লিপিবদ্ধ হয়।
Was this article helpful?