Google চ্যাট বার্তাগুলিতে লিঙ্কগুলির পূর্বরূপ দেখুন

ব্যবহারকারীরা যখন Google Chat-এ একটি লিঙ্ক শেয়ার করেন তখন প্রসঙ্গ পরিবর্তন রোধ করতে, আপনার Chat অ্যাপ তাদের মেসেজের সাথে একটি কার্ড সংযুক্ত করে লিঙ্কটির পূর্বরূপ দেখতে পারে যা আরও তথ্য দেয় এবং লোকেদের সরাসরি Google Chat থেকে পদক্ষেপ নিতে দেয়।

Google Chat-এ অ্যাড-অনগুলি ব্যবহারকারীদের কাছে Google Chat অ্যাপ হিসেবে দেখা যায়। আরও জানতে, এক্সটেন্ড Google চ্যাট ওভারভিউ দেখুন।

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

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

যখন কেউ তাদের বার্তায় একটি লিঙ্ক যোগ করে, তখন একটি চিপ উপস্থিত হয় যা তাদের জানতে দেয় যে একটি চ্যাট অ্যাপ লিঙ্কটির পূর্বরূপ দেখতে পারে।

চিপ ইঙ্গিত করে যে একটি চ্যাট অ্যাপ একটি লিঙ্কের পূর্বরূপ দেখতে পারে

বার্তা পাঠানোর পরে, লিঙ্কটি চ্যাট অ্যাপে পাঠানো হয়, যা তারপর ব্যবহারকারীর বার্তায় কার্ড তৈরি করে এবং সংযুক্ত করে।

চ্যাট অ্যাপ মেসেজের সাথে একটি কার্ড সংযুক্ত করে একটি লিঙ্কের প্রিভিউ করছে

লিঙ্কের পাশাপাশি, কার্ডটি বোতামের মতো ইন্টারেক্টিভ উপাদান সহ লিঙ্ক সম্পর্কে অতিরিক্ত তথ্য প্রদান করে। আপনার চ্যাট অ্যাপ ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতিক্রিয়া হিসেবে সংযুক্ত কার্ড আপডেট করতে পারে, যেমন বোতামে ক্লিক করা।

যদি কেউ চান না যে চ্যাট অ্যাপ তাদের বার্তার সাথে একটি কার্ড সংযুক্ত করে তাদের লিঙ্কের পূর্বরূপ দেখুক, তারা প্রিভিউ চিপে ক্লিক করে প্রিভিউ করা প্রতিরোধ করতে পারে। ব্যবহারকারীরা যেকোন সময় রিমুভ প্রিভিউ এ ক্লিক করে সংযুক্ত কার্ডটি সরাতে পারেন।

পূর্বশর্ত

Node.js

একটি Google Workspace অ্যাড-অন যা Google Chat প্রসারিত করে। একটি তৈরি করতে, HTTP কুইকস্টার্ট সম্পূর্ণ করুন।

অ্যাপস স্ক্রিপ্ট

একটি Google Workspace অ্যাড-অন যা Google Chat প্রসারিত করে। একটি তৈরি করতে, Apps Script quickstart সম্পূর্ণ করুন।

Google ক্লাউড কনসোলে আপনার চ্যাট অ্যাপের কনফিগারেশন পৃষ্ঠায় URL প্যাটার্ন হিসাবে example.com , support.example.com , এবং support.example.com/cases/ মতো নির্দিষ্ট লিঙ্কগুলি নিবন্ধন করুন যাতে আপনার চ্যাট অ্যাপ তাদের পূর্বরূপ দেখতে পারে।

লিঙ্ক পূর্বরূপ কনফিগারেশন মেনু

  1. গুগল ক্লাউড কনসোল খুলুন।
  2. "Google ক্লাউড"-এর পাশে, নিচের তীর ক্লিক করুন এবং আপনার চ্যাট অ্যাপের প্রোজেক্ট খুলুন।
  3. অনুসন্ধান ক্ষেত্রে, Google Chat API টাইপ করুন এবং Google Chat API-এ ক্লিক করুন।
  4. পরিচালনা > কনফিগারেশন ক্লিক করুন।
  5. লিঙ্ক পূর্বরূপের অধীনে, একটি URL প্যাটার্ন যোগ করুন বা সম্পাদনা করুন।
    1. একটি নতুন URL প্যাটার্নের জন্য লিঙ্কের পূর্বরূপ কনফিগার করতে, URL প্যাটার্ন যোগ করুন ক্লিক করুন।
    2. একটি বিদ্যমান URL প্যাটার্নের জন্য কনফিগারেশন সম্পাদনা করতে, নিচের তীর ক্লিক করুন।
  6. হোস্ট প্যাটার্ন ক্ষেত্রে, URL প্যাটার্নের ডোমেন লিখুন। চ্যাট অ্যাপ এই ডোমেনের লিঙ্কগুলির পূর্বরূপ দেখাবে।

    একটি নির্দিষ্ট সাবডোমেনের জন্য চ্যাট অ্যাপ প্রিভিউ লিঙ্ক পেতে, যেমন subdomain.example.com , সাবডোমেন অন্তর্ভুক্ত করুন।

    পুরো ডোমেনের জন্য চ্যাট অ্যাপের প্রিভিউ লিঙ্ক পেতে, সাবডোমেন হিসেবে তারকাচিহ্ন (*) সহ একটি ওয়াইল্ডকার্ড অক্ষর উল্লেখ করুন। উদাহরণস্বরূপ, *.example.com subdomain.example.com এবং any.number.of.subdomains.example.com সাথে মেলে।

  7. পথ উপসর্গ ক্ষেত্রে, হোস্ট প্যাটার্ন ডোমেনে যুক্ত করার জন্য একটি পাথ লিখুন।

    হোস্ট প্যাটার্ন ডোমেনে সমস্ত ইউআরএল মেলানোর জন্য, পাথ উপসর্গ খালি রাখুন।

    উদাহরণস্বরূপ, যদি হোস্ট প্যাটার্ন হয় support.example.com , তাহলে support.example.com/cases/ এ হোস্ট করা ক্ষেত্রে URL-এর সাথে মিল রাখতে, cases/ লিখুন।

  8. সম্পন্ন ক্লিক করুন.

  9. Save এ ক্লিক করুন।

এখন, যখনই কেউ একটি লিঙ্ক অন্তর্ভুক্ত করে যা একটি লিঙ্ক প্রিভিউ URL প্যাটার্নের সাথে মেলে এমন একটি চ্যাট স্পেসের একটি বার্তার সাথে যার মধ্যে আপনার চ্যাট অ্যাপ রয়েছে, আপনার অ্যাপ লিঙ্কটির পূর্বরূপ দেখায়।

আপনি একটি প্রদত্ত লিঙ্কের জন্য লিঙ্ক প্রিভিউ কনফিগার করার পরে, আপনার চ্যাট অ্যাপ এটিতে আরও তথ্য সংযুক্ত করে লিঙ্কটিকে চিনতে এবং পূর্বরূপ দেখতে পারে।

চ্যাট স্পেসগুলির ভিতরে যা আপনার চ্যাট অ্যাপকে অন্তর্ভুক্ত করে, যখন কারো বার্তায় একটি লিঙ্ক থাকে যা লিঙ্কের পূর্বরূপ URL প্যাটার্নের সাথে মেলে, আপনার চ্যাট অ্যাপ একটি MessagePayload সহ একটি ইভেন্ট অবজেক্ট পায়। পেলোডে, message.matchedUrl অবজেক্টে সেই লিঙ্ক রয়েছে যা ব্যবহারকারী বার্তায় অন্তর্ভুক্ত করেছেন:

JSON

message: {
  matchedUrl: {
    url: "https://support.example.com/cases/case123"
  },
  ... // other message attributes redacted
}

MESSAGE ইভেন্ট পেলোডে matchedUrl ফিল্ডের উপস্থিতি পরীক্ষা করে, আপনার চ্যাট অ্যাপটি প্রিভিউ করা লিঙ্ক সহ মেসেজে তথ্য যোগ করতে পারে। আপনার চ্যাট অ্যাপটি হয় একটি মৌলিক পাঠ্য বার্তার সাথে উত্তর দিতে পারে বা একটি কার্ড সংযুক্ত করতে পারে।

একটি পাঠ্য বার্তা দিয়ে উত্তর দিন

প্রাথমিক প্রতিক্রিয়াগুলির জন্য, আপনার চ্যাট অ্যাপ একটি লিঙ্কে একটি পাঠ্য বার্তার সাথে উত্তর দিয়ে একটি লিঙ্কের পূর্বরূপ দেখতে পারে। এই উদাহরণটি এমন একটি বার্তা সংযুক্ত করে যা লিঙ্কের URLটির পুনরাবৃত্তি করে যা একটি লিঙ্কের পূর্বরূপ URL প্যাটার্নের সাথে মেলে।

Node.js

/**
 * Google Cloud Function that handles messages that have links whose
 * URLs match URL patterns configured for link previewing.
 *
 *
 * @param {Object} req Request sent from Google Chat space
 * @param {Object} res Response to send back
 */
exports.previewLinks = function previewLinks(req, res) {
  const chatEvent = req.body.chat;

  // Handle MESSAGE events
  if(chatEvent.messagePayload) {
    return res.send(handlePreviewLink(chatEvent.messagePayload.message));
  // Handle button clicks
  } else if(chatEvent.buttonClickedPayload) {
    return res.send(handleCardClick(chatEvent.buttonClickedPayload.message));
  }
};

/**
 * Respond to messages that have links whose URLs match URL patterns configured
 * for link previewing.
 *
 * @param {Object} chatMessage The chat message object from Google Workspace Add On event.
 * @return {Object} Response to send back depending on the matched URL.
 */
function handlePreviewLink(chatMessage) {
  // If the Chat app does not detect a link preview URL pattern, reply
  // with a text message that says so.
  if (!chatMessage.matchedUrl) {
    return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: 'No matchedUrl detected.'
    }}}}};
  }

  // Reply with a text message for URLs of the subdomain "text"
  if (chatMessage.matchedUrl.url.includes("text.example.com")) {
    return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: 'event.chat.messagePayload.message.matchedUrl.url: ' + chatMessage.matchedUrl.url
    }}}}};
  }
}

অ্যাপস স্ক্রিপ্ট

/**
 * Reply to messages that have links whose URLs match the pattern
 * "text.example.com" configured for link previewing.
 *
 * @param {Object} event The event object from Google Workspace Add-on.
 *
 * @return {Object} The action response.
 */
function onMessage(event) {
  // Stores the Google Chat event as a variable.
  const chatMessage = event.chat.messagePayload.message;

  // If the Chat app doesn't detect a link preview URL pattern, reply
  // with a text message that says so.
  if (!chatMessage.matchedUrl) {
    return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: 'No matchedUrl detected.'
    }}}}};
  }

  // Reply with a text message for URLs of the subdomain "text".
  if (chatMessage.matchedUrl.url.includes("text.example.com")) {
    return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: 'event.chat.messagePayload.message.matchedUrl.url: ' + chatMessage.matchedUrl.url
    }}}}};
  }
}

একটি প্রাকদর্শন লিঙ্কে একটি কার্ড সংযুক্ত করতে, UpdateInlinePreviewAction টাইপের ChatDataActionMarkup অবজেক্টের সাথে কর্ম DataActions ফেরত দিন।

নিম্নলিখিত উদাহরণে, একটি চ্যাট অ্যাপ URL প্যাটার্ন support.example.com ধারণকারী বার্তাগুলিতে একটি পূর্বরূপ কার্ড যোগ করে।

চ্যাট অ্যাপ মেসেজের সাথে একটি কার্ড সংযুক্ত করে একটি লিঙ্কের প্রিভিউ করছে

Node.js

/**
 * Google Cloud Function that handles messages that have links whose
 * URLs match URL patterns configured for link previewing.
 *
 *
 * @param {Object} req Request sent from Google Chat space
 * @param {Object} res Response to send back
 */
exports.previewLinks = function previewLinks(req, res) {
  const chatEvent = req.body.chat;

  // Handle MESSAGE events
  if(chatEvent.messagePayload) {
    return res.send(handlePreviewLink(chatEvent.messagePayload.message));
  // Handle button clicks
  } else if(chatEvent.buttonClickedPayload) {
    return res.send(handleCardClick(chatEvent.buttonClickedPayload.message));
  }
};

/**
 * Respond to messages that have links whose URLs match URL patterns configured
 * for link previewing.
 *
 * @param {Object} chatMessage The chat message object from Google Workspace Add On event.
 * @return {Object} Response to send back depending on the matched URL.
 */
function handlePreviewLink(chatMessage) {
  // Attach a card to the message for URLs of the subdomain "support"
  if (chatMessage.matchedUrl.url.includes("support.example.com")) {
    // A hard-coded card is used in this example. In a real-life scenario,
    // the case information would be fetched and used to build the card.
    return { hostAppDataAction: { chatDataAction: { updateInlinePreviewAction: { cardsV2: [{
      cardId: 'attachCard',
      card: {
        header: {
          title: 'Example Customer Service Case',
          subtitle: 'Case basics',
        },
        sections: [{ widgets: [
        { decoratedText: { topLabel: 'Case ID', text: 'case123'}},
        { decoratedText: { topLabel: 'Assignee', text: 'Charlie'}},
        { decoratedText: { topLabel: 'Status', text: 'Open'}},
        { decoratedText: { topLabel: 'Subject', text: 'It won\'t turn on...' }},
        { buttonList: { buttons: [{
          text: 'OPEN CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123'
          }},
        }, {
          text: 'RESOLVE CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123?resolved=y',
          }},
        }, {
          text: 'ASSIGN TO ME',
          // Use runtime environment variable set with self URL
          onClick: { action: { function: process.env.BASE_URL }}
        }]}}
        ]}]
      }
    }]}}}};
  }
}

অ্যাপস স্ক্রিপ্ট

এই উদাহরণ কার্ড JSON ফেরত দিয়ে একটি কার্ড বার্তা পাঠায়। আপনি Apps স্ক্রিপ্ট কার্ড পরিষেবাও ব্যবহার করতে পারেন৷

/**
 * Attach a card to messages that have links whose URLs match the pattern
 * "support.example.com" configured for link previewing.
 *
 * @param {Object} event The event object from Google Workspace Add-on.
 *
 * @return {Object} The action response.
 */
function onMessage(event) {
  // Stores the Google Chat event as a variable.
  const chatMessage = event.chat.messagePayload.message;

  // Attach a card to the message for URLs of the subdomain "support".
  if (chatMessage.matchedUrl.url.includes("support.example.com")) {
    // A hard-coded card is used in this example. In a real-life scenario,
    // the case information would be fetched and used to build the card.
    return { hostAppDataAction: { chatDataAction: { updateInlinePreviewAction: { cardsV2: [{
      cardId: 'attachCard',
      card: {
        header: {
          title: 'Example Customer Service Case',
          subtitle: 'Case summary',
        },
        sections: [{ widgets: [
        { decoratedText: { topLabel: 'Case ID', text: 'case123'}},
        { decoratedText: { topLabel: 'Assignee', text: 'Charlie'}},
        { decoratedText: { topLabel: 'Status', text: 'Open'}},
        { decoratedText: { topLabel: 'Subject', text: 'It won\'t turn on...' }},
        { buttonList: { buttons: [{
          text: 'OPEN CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123'
          }},
        }, {
          text: 'RESOLVE CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123?resolved=y',
          }},
        }, {
          text: 'ASSIGN TO ME',
          // Clicking this button triggers the execution of the function
          // "assign" from the Apps Script project.
          onClick: { action: { function: 'assign'}}
        }]}}
        ]}]
      }
    }]}}}};
  }
}

আপনার চ্যাট অ্যাপ একটি লিঙ্ক প্রিভিউ কার্ড আপডেট করতে পারে যখন ব্যবহারকারীরা এটির সাথে ইন্টারঅ্যাক্ট করেন, যেমন কার্ডের একটি বোতামে ক্লিক করা।

কার্ডটি আপডেট করতে, আপনার চ্যাট অ্যাপকে অবশ্যই নিম্নলিখিত ChatDataActionMarkup অবজেক্টগুলির একটির সাথে অ্যাকশন DataActions ফেরত দিতে হবে:

  • যদি কোনো ব্যবহারকারী বার্তা পাঠিয়ে থাকেন, একটি UpdateMessageAction অবজেক্ট ফেরত দিন।
  • চ্যাট অ্যাপ মেসেজ পাঠিয়ে থাকলে, একটি UpdateInlinePreviewAction অবজেক্ট ফেরত দিন।

কে বার্তা পাঠিয়েছে তা নির্ধারণ করতে, ইভেন্ট পেলোড ( buttonClickedPayload ) ব্যবহার করে প্রেরক ( message.sender.type ) HUMAN (ব্যবহারকারী) বা BOT (চ্যাট অ্যাপ) সেট করা আছে কিনা তা পরীক্ষা করুন।

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে একটি চ্যাট অ্যাপ একটি লিঙ্ক প্রিভিউ আপডেট করে যখনই একজন ব্যবহারকারী কার্ডের অ্যাসাইনি ফিল্ড আপডেট করে এবং বোতামটি নিষ্ক্রিয় করে আমাকে অ্যাসাইন বোতামে ক্লিক করেন।

চ্যাট অ্যাপ একটি বার্তার সাথে সংযুক্ত একটি কার্ডের একটি আপডেট সংস্করণ সহ একটি লিঙ্কের পূর্বরূপ দেখায়৷

Node.js

/**
 * Google Cloud Function that handles messages that have links whose
 * URLs match URL patterns configured for link previewing.
 *
 *
 * @param {Object} req Request sent from Google Chat space
 * @param {Object} res Response to send back
 */
exports.previewLinks = function previewLinks(req, res) {
  const chatEvent = req.body.chat;

  // Handle MESSAGE events
  if(chatEvent.messagePayload) {
    return res.send(handlePreviewLink(chatEvent.messagePayload.message));
  // Handle button clicks
  } else if(chatEvent.buttonClickedPayload) {
    return res.send(handleCardClick(chatEvent.buttonClickedPayload.message));
  }
};

/**
 * Respond to clicks by assigning user and updating the card that was attached to a
 * message with a previewed link.
 *
 * @param {Object} chatMessage The chat message object from Google Workspace Add On event.
 * @return {Object} Action response depending on the original message.
 */
function handleCardClick(chatMessage) {
  // Creates the updated card that displays "You" for the assignee
  // and that disables the button.
  //
  // A hard-coded card is used in this example. In a real-life scenario,
  // an actual assign action would be performed before building the card.
  const message = { cardsV2: [{
    cardId: 'attachCard',
    card: {
      header: {
        title: 'Example Customer Service Case',
        subtitle: 'Case basics',
      },
      sections: [{ widgets: [
        { decoratedText: { topLabel: 'Case ID', text: 'case123'}},
        // The assignee is now "You"
        { decoratedText: { topLabel: 'Assignee', text: 'You'}},
        { decoratedText: { topLabel: 'Status', text: 'Open'}},
        { decoratedText: { topLabel: 'Subject', text: 'It won\'t turn on...' }},
        { buttonList: { buttons: [{
          text: 'OPEN CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123'
          }},
        }, {
          text: 'RESOLVE CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123?resolved=y',
          }},
        }, {
          text: 'ASSIGN TO ME',
          // The button is now disabled
          disabled: true,
          // Use runtime environment variable set with self URL
          onClick: { action: { function: process.env.BASE_URL }}
        }]}}
      ]}]
    }
  }]};

  // Checks whether the message event originated from a human or a Chat app
  // to return the adequate action response.
  if(chatMessage.sender.type === 'HUMAN') {
    return { hostAppDataAction: { chatDataAction: { updateInlinePreviewAction: message }}};
  } else {
    return { hostAppDataAction: { chatDataAction: { updateMessageAction: message }}};
  }
}

অ্যাপস স্ক্রিপ্ট

এই উদাহরণ কার্ড JSON ফেরত দিয়ে একটি কার্ড বার্তা পাঠায়। আপনি Apps স্ক্রিপ্ট কার্ড পরিষেবাও ব্যবহার করতে পারেন৷

/**
 * Assigns and updates the card that's attached to a message with a
 * previewed link of the pattern "support.example.com".
 *
 * @param {Object} event The event object from the Google Workspace Add-on.
 *
 * @return {Object} Action response depending on the message author.
 */
function assign(event) {
  // Creates the updated card that displays "You" for the assignee
  // and that disables the button.
  //
  // A hard-coded card is used in this example. In a real-life scenario,
  // an actual assign action would be performed before building the card.
  const message = { cardsV2: [{
    cardId: 'attachCard',
    card: {
      header: {
        title: 'Example Customer Service Case',
        subtitle: 'Case summary',
      },
      sections: [{ widgets: [
        { decoratedText: { topLabel: 'Case ID', text: 'case123'}},
        // The assignee is now "You"
        { decoratedText: { topLabel: 'Assignee', text: 'You'}},
        { decoratedText: { topLabel: 'Status', text: 'Open'}},
        { decoratedText: { topLabel: 'Subject', text: 'It won\'t turn on...' }},
        { buttonList: { buttons: [{
          text: 'OPEN CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123'
          }},
        }, {
          text: 'RESOLVE CASE',
          onClick: { openLink: {
            url: 'https://support.example.com/orders/case123?resolved=y',
          }},
        }, {
          text: 'ASSIGN TO ME',
          // The button is now disabled
          disabled: true,
          onClick: { action: { function: 'assign'}}
        }]}}
      ]}]
    }
  }]};

  // Use the adequate action response type. It depends on whether the message
  // the preview link card is attached to was created by a human or a Chat app.
  if(event.chat.buttonClickedPayload.message.sender.type === 'HUMAN') {
    return { hostAppDataAction: { chatDataAction: { updateInlinePreviewAction: message }}};
  } else {
    return { hostAppDataAction: { chatDataAction: { updateMessageAction: message }}};
  }
}

সীমা এবং বিবেচনা

আপনি আপনার চ্যাট অ্যাপের জন্য লিঙ্ক প্রিভিউ কনফিগার করার সময়, এই সীমা এবং বিবেচনাগুলি নোট করুন:

  • প্রতিটি চ্যাট অ্যাপ 5টি পর্যন্ত URL প্যাটার্নের জন্য লিঙ্ক প্রিভিউ সমর্থন করে।
  • চ্যাট অ্যাপস প্রতি বার্তা প্রতি একটি লিঙ্কের পূর্বরূপ। যদি একাধিক পূর্বদর্শনযোগ্য লিঙ্ক একটি একক বার্তায় উপস্থিত থাকে, তবে শুধুমাত্র প্রথম পূর্বদর্শনযোগ্য লিঙ্কের পূর্বরূপ।
  • চ্যাট অ্যাপগুলি শুধুমাত্র https:// দিয়ে শুরু হওয়া লিঙ্কগুলির পূর্বরূপ দেখায়, তাই https://support.example.com/cases/ previews, কিন্তু support.example.com/cases/ করে না৷
  • স্ল্যাশ কমান্ডের মতো চ্যাট অ্যাপে পাঠানো অন্যান্য তথ্য বার্তাটিতে না থাকলে, শুধুমাত্র লিঙ্কের ইউআরএলটি চ্যাট অ্যাপে লিঙ্ক প্রিভিউ দ্বারা পাঠানো হয়।
  • যদি কোনও ব্যবহারকারী লিঙ্কটি পোস্ট করেন, একটি চ্যাট অ্যাপ শুধুমাত্র লিঙ্ক প্রিভিউ কার্ড আপডেট করতে পারে যদি ব্যবহারকারীরা কার্ডের সাথে ইন্টারঅ্যাক্ট করেন, যেমন একটি বোতামে ক্লিক করে। ব্যবহারকারীর বার্তা অ্যাসিঙ্ক্রোনাসভাবে আপডেট করার জন্য আপনি Message সংস্থানে চ্যাট API-এর update() পদ্ধতিতে কল করতে পারবেন না।
  • চ্যাট অ্যাপ্লিকেশানগুলিকে অবশ্যই স্থানের প্রত্যেকের জন্য লিঙ্কগুলির পূর্বরূপ দেখতে হবে, তাই বার্তাটি অবশ্যই privateMessageViewer ক্ষেত্রটি বাদ দিতে হবে৷

আপনি লিঙ্ক প্রিভিউ প্রয়োগ করার সময়, আপনাকে অ্যাপের লগ পড়ে আপনার চ্যাট অ্যাপ ডিবাগ করতে হতে পারে। লগগুলি পড়তে, Google ক্লাউড কনসোলে লগ এক্সপ্লোরারে যান৷