অন্যান্য পরিষেবা ও টুলের সাথে Chat অ্যাপ কানেক্ট করা

Google Chat-এর বাইরের কোনও পরিষেবা বা টুলের সাথে Google Chat অ্যাপ কীভাবে কানেক্ট করতে হয় তা এই পৃষ্ঠায় বর্ণনা করা হয়েছে। চ্যাট অ্যাপগুলি নিজে থেকেই শক্তিশালী হলেও, সেগুলি প্রায়ই অন্যান্য সিস্টেমের সাথে একসাথে কাজ করে এবং অ্যাকাউন্ট কানেক্ট করা, ডেটা অ্যাক্সেস অনুমোদন করা, অতিরিক্ত ডেটা দেখানো বা ব্যবহারকারীর পছন্দ কনফিগার করার জন্য কম্প্যানিয়ন অ্যাপ্লিকেশনের প্রয়োজন হয়।

থার্ড-পার্টি পরিষেবা বা OAuth ফ্লোয়ের মাধ্যমে ব্যবহারকারীদের যাচাই করতে, আপনার Chat অ্যাপ নিম্নলিখিত ধাপগুলি সম্পূর্ণ করে:

  1. কখন অনুমোদন বা কনফিগারেশন প্রয়োজন তা শনাক্ত করা।
  2. একটি প্রাথমিক অনুমোদন কার্ড ফেরত দিন যা ব্যবহারকারীকে পরিষেবাতে সাইন-ইন বা কনফিগার করার জন্য প্রম্পট করে।
  3. সম্পূর্ণ URI-তে রিডাইরেক্ট করুন যাতে Google Chat ব্যবহারকারী অনুমোদন সম্পূর্ণ করার পরে আসল ইন্টার‍্যাকশন অটোমেটিক আবার চেষ্টা করে।

Google Chat অ্যাপ কীভাবে থার্ড-পার্টি পরিষেবার সাথে প্রমাণীকরণ করে তার আর্কিটেকচার।

পূর্বশর্ত

HTTP

Google Chat অ্যাপ যা ব্যবহারকারীর ইন্টার‍্যাকশন গ্রহণ করে এবং উত্তর দেয়। এটি তৈরি করতে, HTTP কুইকস্টার্ট সম্পূর্ণ করুন।

Apps Script

Google Chat অ্যাপ যা ব্যবহারকারীর ইন্টার‍্যাকশন গ্রহণ করে এবং উত্তর দেয়। এটি তৈরি করতে, অ্যাপ স্ক্রিপ্ট কুইকস্টার্ট সম্পূর্ণ করুন।

অনুমোদন প্রয়োজন কিনা তা শনাক্ত করা

আপনার Chat অ্যাপের সাথে ইন্টার‍্যাক্ট করার সময়, ব্যবহারকারীকে বিভিন্ন কারণে সুরক্ষিত রিসোর্স অ্যাক্সেস করার অনুমতি নাও দেওয়া হতে পারে, যেমন নিম্নলিখিত কারণ:

  • থার্ড-পার্টি পরিষেবার সাথে কানেক্ট করার জন্য অ্যাক্সেস টোকেন এখনও তৈরি করা হয়নি অথবা সেটির মেয়াদ শেষ হয়ে গেছে।
  • অ্যাক্সেস টোকেন অনুরোধ করা রিসোর্স কভার করে না।
  • অ্যাক্সেস টোকেন অনুরোধের প্রয়োজনীয় স্কোপ কভার করে না।

আপনার Chat অ্যাপকে এইসব কেস শনাক্ত করতে হবে যাতে ব্যবহারকারীরা সাইন-ইন করতে এবং আপনার পরিষেবায় অ্যাক্সেস অনুমোদন করতে পারেন।

আপনি Apps Script-এ তৈরি করলে, Google Apps Script লাইব্রেরির জন্য OAuth2 (অথবা OAuth1 ভার্সন) ব্যবহার করতে পারবেন, যেখানে hasAccess ফাংশন চেক করে যে ব্যবহারকারীর কাছে কোনও পরিষেবা অ্যাক্সেস করার জন্য অনুমোদিত অ্যাক্সেস আছে কিনা। অথবা, UrlFetchApp.fetch অনুরোধ ব্যবহার করার সময়, আপনি muteHttpExceptions প্যারামিটারকে true হিসেবে সেট করে প্রতিক্রিয়া কোড ও কন্টেন্ট চেক করতে পারেন। এটি ফেরত আসা HttpResponse অবজেক্টে থাকে।

ব্যবহারকারীকে প্রাথমিক অনুমোদন কার্ডের মাধ্যমে প্রম্পট করা

আপনার Chat অ্যাপ যদি শনাক্ত করে যে অনুমোদন বা কনফিগারেশন প্রয়োজন, তাহলে ব্যবহারকারীকে একটি ব্যক্তিগত প্রাথমিক অনুমোদন কার্ড দেখানোর জন্য AuthorizationError উত্তর দিন।

নিচের ছবিতে Google-এর সাধারণ অনুমোদন কার্ডের একটি উদাহরণ দেখানো হয়েছে:

Example অ্যাকাউন্টের জন্য প্রাথমিক অনুমোদনের প্রম্পট।
ছবি ১: উদাহরণ অ্যাকাউন্টের জন্য প্রাথমিক অনুমোদন সংক্রান্ত প্রম্পট। প্রম্পটে বলা হয়েছে যে Chat অ্যাপ অতিরিক্ত তথ্য দেখাতে চায়, কিন্তু অ্যাকাউন্ট অ্যাক্সেস করার জন্য ব্যবহারকারীর অনুমোদন প্রয়োজন।

ব্যবহারকারীকে একটি প্রাথমিক অনুমোদনের কার্ড দেখাতে, একটি AuthorizationError অবজেক্ট রিটার্ন করুন:

HTTP

নিম্নলিখিত JSON উত্তর দিন:

{
  "basic_authorization_prompt": {
    "authorization_url": "<var>AUTHORIZATION_URL</var>",
    "resource": "<var>RESOURCE_DISPLAY_NAME</var>"
  }
}

Apps Script

CardService.newAuthorizationException()
    .setAuthorizationUrl('<var>AUTHORIZATION_URL</var>')
    .setResourceDisplayName('<var>RESOURCE_DISPLAY_NAME</var>')
    .throwException();

নিম্নলিখিত বিষয়গুলি পরিবর্তন করুন:

  • AUTHORIZATION_URL: ওয়েব অ্যাপের HTTPS URL যা প্রমাণীকরণ, অনুমোদন বা কনফিগারেশন ম্যানেজ করে।
  • RESOURCE_DISPLAY_NAME: সুরক্ষিত রিসোর্স বা পরিষেবার ডিসপ্লে নাম। অনুমতি সংক্রান্ত প্রম্পটে ব্যবহারকারীকে এই নাম দেখানো হয়। যেমন, আপনার RESOURCE_DISPLAY_NAME যদি Example Account হয়, তাহলে প্রম্পটে বলা হবে যে অ্যাপটিকে আপনার Example Account অ্যাক্সেস করার জন্য অনুমোদন দিতে হবে।

কনফিগারেশন সংক্রান্ত অনুরোধ সম্পূর্ণ করুন

Chat-এ, ব্যবহারকারী অনুমোদন প্রক্রিয়া সম্পূর্ণ করতে পারবেন এবং ম্যানুয়াল রিফ্রেশ ছাড়াই Chat অটোমেটিক মূল ইন্টার‍্যাকশন আবার চেষ্টা করবে। Chat অটোমেটিক আবার চেষ্টা করার সুবিধা দেয়, যদি ট্রিগার হল মেসেজ, স্পেসে যোগ করা হয়েছে অথবা অ্যাপ কমান্ড হয়।

এইসব ট্রিগারের জন্য, আপনার Chat অ্যাপ একটি সম্পূর্ণতা রিডাইরেক্ট URI (configCompleteRedirectUri / completeRedirectUri) পায় ইভেন্ট পেলোডে:

  • মেসেজ: chat.messagePayload.configCompleteRedirectUri
  • স্পেসে যোগ করা হয়েছে: chat.addedToSpacePayload.configCompleteRedirectUri
  • অ্যাপ কমান্ড: chat.appCommandPayload.configCompleteRedirectUri

আপনাকে অবশ্যই এই রিডাইরেক্ট URI-কে আপনার <var>AUTHORIZATION_URL</var>-এ এনকোড করতে হবে এবং অনুমোদন ফ্লো সম্পূর্ণ হওয়ার পরে ব্যবহারকারীর ব্রাউজারকে এতে রিডাইরেক্ট করতে হবে। এই URL-এ রিডাইরেক্ট করা হলে Google Chat বুঝতে পারে যে অনুমোদন বা কনফিগারেশন সংক্রান্ত অনুরোধ পূরণ করা হয়েছে।

ব্যবহারকারীকে মূল ইভেন্ট পেলোডে দেওয়া সম্পূর্ণতা রিডাইরেক্ট URI-তে সফলভাবে রিডাইরেক্ট করা হলে, Google Chat নিম্নলিখিত ধাপগুলি অনুসরণ করে:

  1. যে ব্যবহারকারী অনুরোধ করেছেন তাকে দেখানো ব্যক্তিগত অনুমোদন সংক্রান্ত প্রম্পট মুছে দেয়।
  2. মূল মেসেজটি সর্বজনীন হিসেবে কনভার্ট করে, ফলে স্পেসের অন্যান্য মেম্বাররা সেটি দেখতে পান।
  3. আপনার Chat অ্যাপে দ্বিতীয়বার আসল ইভেন্ট অবজেক্ট পাঠায়।

আপনি যদি সম্পূর্ণতা রিডাইরেক্ট URI-তে রিডাইরেক্ট না করেন, তাহলে ব্যবহারকারী এখনও অনুমোদন ফ্লো সম্পূর্ণ করতে পারবেন, কিন্তু Google Chat অটোমেটিক আগের এক্সিকিউশন আবার চেষ্টা করে না এবং ব্যবহারকারীকে অবশ্যই আপনার Chat অ্যাপ আবার ম্যানুয়ালি খুলতে হবে।

সম্পূর্ণতা রিডাইরেক্ট URI-তে গেলে শুধুমাত্র একটি ব্যবহারকারীর ইন্টার‍্যাকশন প্রভাবিত হয়। কোনও ব্যবহারকারী Chat অ্যাপে একাধিকবার মেসেজ করলে এবং একাধিক প্রম্পট পেলে, কোনও একটি প্রম্পটের জন্য যাচাইকরণ ও কনফিগারেশন প্রসেস সম্পূর্ণ করলে শুধুমাত্র সেই নির্দিষ্ট ইন্টার‍্যাকশনটি আবার চেষ্টা করা হয়।

Chat-এর বাইরে Chat ব্যবহারকারীকে যাচাই করা

Chat-এর বাইরের কোনও URL-এর সাথে লিঙ্ক করার সময় (যেমন, OAuth ওয়েব কলব্যাক), আপনাকে প্রায়ই Chat-এ ব্যবহারকারীর পরিচয়ের সাথে এক্সটার্নাল ওয়েব সেশন কোরিলেট করতে হয়। আমরা সাজেস্ট করি যে আপনি Google সাইন-ইন ব্যবহার করে গন্তব্য ওয়েব অ্যাপ সুরক্ষিত করুন।

সাইন-ইন করার সময় ইস্যু করা পরিচয় টোকেন ব্যবহার করে ব্যবহারকারীর আইডি পান। sub দাবিটিতে ব্যবহারকারীর অনন্য Google আইডি থাকে এবং Google Chat থেকে ব্যবহারকারীর রিসোর্স নামের (chat.user.name) সাথে কোরিলেট করা যায়।

sub দাবিকে Google Chat users/{user} রিসোর্স নামের সাথে কোরিলেট করতে, sub দাবি ভ্যালুর আগে users/ যোগ করুন। যেমন, sub দাবি করা ভ্যালু 123 আপনার Chat অ্যাপে পাঠানো ইভেন্ট অবজেক্টের users/123-এর সাথে সম্পর্কিত।

কোডের নমুনা

নিম্নলিখিত কোড স্যাম্পেল থেকে বোঝা যায় যে কীভাবে কোনও চ্যাট অ্যাপ বেসিক অনুমোদনের কার্ড ব্যবহার করে অফলাইন OAuth2 ক্রেডেনশিয়াল অনুরোধ করতে, সেগুলি ডেটাবেসে সেভ করতে, সম্পূর্ণ URI-তে রিডাইরেক্ট করতে এবং ব্যবহারকারীর যাচাইকরণ সহ API কল করতে পারে:

অ্যাড-অন নয় এমন চ্যাট অ্যাপ: অন্যান্য পরিষেবা ও টুলের সাথে চ্যাট অ্যাপ কানেক্ট করা

আপনি যদি এমন একটি Chat অ্যাপ বজায় রাখেন যা Google Workspace অ্যাড-অন নয়, তাহলে আপনার Chat অ্যাপটি REQUEST_CONFIG টাইপের actionResponse ব্যবহার করে কনফিগারেশনের অনুরোধ করে এবং টপ-লেভেল Event অবজেক্ট থেকে configCompleteRedirectUrl পড়ে।

Google Workspace অ্যাড-অন ফ্রেমওয়ার্কে অ্যাড-অন নয় এমন Chat অ্যাপ আপগ্রেড করতে, Google Chat অ্যাপকে Google Workspace অ্যাড-অনে কনভার্ট করুন লিঙ্কে দেখুন।

অ্যাড-অন নয় এমন Chat অ্যাপের ব্যবহারকারীর থেকে কনফিগারেশনের অনুরোধ করা

অ্যাড-অন নয় এমন চ্যাট অ্যাপে, নিচের ফর্ম্যাটে ব্যবহারকারীকে একটি কনফিগারেশন URL ফেরান:

{
  "actionResponse": {
    "type": "REQUEST_CONFIG",
    "url": "CONFIGURATION_URL"
  }
}

এটি Google Chat-কে ব্যবহারকারীকে একটি ব্যক্তিগত প্রম্পট দেখাতে বলে, যেখানে CONFIGURATION_URL হল ব্যবহারকারীর জন্য অতিরিক্ত যাচাইকরণ, অনুমোদন বা কনফিগারেশনের জন্য ভিজিট করার লিঙ্ক। REQUEST_CONFIG উত্তরটি সাধারণ উত্তর মেসেজের সাথে পারস্পরিকভাবে এক্সক্লুসিভ; যেকোনও টেক্সট, কার্ড বা অন্যান্য অ্যাট্রিবিউট উপেক্ষা করা হয়।

অ্যাড-অন নয় এমন Chat অ্যাপে কনফিগারেশন সংক্রান্ত অনুরোধ সম্পূর্ণ করা

প্রতিটি MESSAGE, ADDED_TO_SPACE ও APP_COMMAND ইন্ট্যার‍্যাকশন Event যা অ্যাড-অন নয় এমন Chat অ্যাপ পায় তার মধ্যে টপ-লেভেল ফিল্ড configCompleteRedirectUrl থাকে। আপনার কনফিগারেশন URL-এ এই URL এনকোড করুন এবং সম্পূর্ণ হওয়ার পরে ব্যবহারকারীকে এতে রিডাইরেক্ট করুন, যাতে Google Chat প্রম্পট মুছে দেয়, আসল মেসেজকে সর্বজনীন হিসেবে কনভার্ট করে এবং আসল ইন্ট্যার‍্যাকশন ইভেন্ট আপনার Chat অ্যাপে আবার পাঠায়।

নমুনা প্রয়োগের জন্য, GitHub-এ Node.js কানেক্টিভিটি অ্যাপের নমুনা এবং Python MyProfile অথেন্টিকেশন অ্যাপের নমুনা দেখুন।