Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

অনুরোধ প্রেরণ অনুমোদন

আপনার অ্যাপ্লিকেশন সার্ভার বা বিশ্বস্ত পরিবেশ থেকে FCM এ পাঠানো অনুরোধগুলি অনুমোদিত হতে হবে। উত্তরাধিকার HTTP এবং HTTP v1 API অনুমোদনের মধ্যে এই গুরুত্বপূর্ণ পার্থক্যগুলি নোট করুন:

  • FCM HTTP v1 API একটি স্বল্প-কালীন OAuth 2.0 অ্যাক্সেস টোকেন সহ অনুরোধগুলি অনুমোদন করে। এই টোকেনটি ছড়িয়ে দিতে, আপনি গুগল অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি (গুগল সার্ভার পরিবেশে) ব্যবহার করতে পারেন এবং / অথবা ম্যানুয়ালি কোনও পরিষেবা অ্যাকাউন্টের জন্য উত্পন্ন জেএসএন প্রাইভেট কী ফাইল থেকে প্রয়োজনীয় শংসাপত্রগুলি পেতে পারেন। আপনি বার্তা প্রেরণের জন্য ফায়ারবেস অ্যাডমিন এসডিকে ব্যবহার করছেন, গ্রন্থাগারটি আপনার জন্য টোকেনটি পরিচালনা করে।
  • উত্তরাধিকার প্রোটোকলগুলি কেবল ফায়ারবেস কনসোল থেকে প্রাপ্ত দীর্ঘকালীন এপিআই কী ব্যবহার করতে পারে।

HTTP ভি 1 প্রেরণের অনুরোধগুলি অনুমোদিত করুন

আপনার সার্ভারের পরিবেশের বিশদের উপর নির্ভর করে ফায়ারবেস পরিষেবাগুলিতে সার্ভারের অনুরোধগুলি অনুমোদিত করতে এই কৌশলগুলির সংমিশ্রণটি ব্যবহার করুন:

  • গুগল অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রসমূহ (এডিসি)
  • একটি পরিষেবা অ্যাকাউন্ট JSON ফাইল
  • একটি পরিষেবা অ্যাকাউন্ট থেকে প্রাপ্ত একটি স্বল্প-কালীন OAuth 2.0 অ্যাক্সেস টোকেন

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

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

এডিসি ব্যবহার করে শংসাপত্র সরবরাহ করুন

গুগল অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি (এডিসি) নিম্নলিখিত ক্রমে আপনার শংসাপত্রগুলির জন্য পরীক্ষা করে:

  1. এডিসি পরিবেশ পরিবর্তনশীল GOOGLE_APPLICATION_CREDENTIALS সেট আছে কিনা তা পরীক্ষা করে। যদি ভেরিয়েবলটি সেট করা থাকে তবে এডিসি ভেরিয়েবলটি নির্দেশ করে এমন পরিষেবা অ্যাকাউন্ট ফাইল ব্যবহার করে।

  2. যদি পরিবেশের পরিবর্তনশীল সেট না করা থাকে তবে এডিসি ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে যা সেই পরিষেবাগুলিতে চলমান অ্যাপ্লিকেশনগুলির জন্য কম্পিউট ইঞ্জিন, কুবারনেটস ইঞ্জিন, অ্যাপ ইঞ্জিন এবং ক্লাউড ফাংশন সরবরাহ করে।

  3. যদি এডিসি উপরের কোনও শংসাপত্র ব্যবহার করতে না পারে তবে সিস্টেমটি একটি ত্রুটি নিক্ষেপ করে।

নিম্নলিখিত অ্যাডমিন এসডিকে কোড উদাহরণটি এই কৌশলটিকে চিত্রিত করে। উদাহরণটি স্পষ্টভাবে অ্যাপ্লিকেশন শংসাপত্রগুলি নির্দিষ্ট করে না। তবে, অ্যাডিসি স্পষ্টভাবে শংসাপত্রগুলি সন্ধান করতে পারে যতক্ষণ না পরিবেশের পরিবর্তনশীল সেট করা থাকে, বা যতক্ষণ অ্যাপ্লিকেশনটি কম্পিউটারের ইঞ্জিন, কুবারনেটস ইঞ্জিন, অ্যাপ ইঞ্জিন বা ক্লাউড ফাংশনগুলিতে চলছে।

নোড.জেএস

1414eb208 বি

জাভা

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);

পাইথন

default_app = firebase_admin.initialize_app()

যাওয়া

app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
}

সি #

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.GetApplicationDefault(),
});

ম্যানুয়ালি শংসাপত্র সরবরাহ করুন

ফায়ারবেস প্রকল্পগুলি Google পরিষেবা অ্যাকাউন্টগুলিকে সমর্থন করে, যা আপনি আপনার অ্যাপ্লিকেশন সার্ভার বা বিশ্বস্ত পরিবেশ থেকে ফায়ারবেস সার্ভার API গুলি কল করতে ব্যবহার করতে পারেন। আপনি যদি স্থানীয়ভাবে কোড বিকাশ করছেন বা আপনার অ্যাপ্লিকেশনটি স্থাপনা ব্যবহার করছেন তবে সার্ভারের অনুরোধগুলি অনুমোদনের জন্য আপনি এই পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রাপ্ত শংসাপত্রগুলি ব্যবহার করতে পারেন।

কোনও পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ এবং ফায়ারবেস পরিষেবাদি অ্যাক্সেস করার জন্য এটি অনুমোদিত করার জন্য, আপনাকে অবশ্যই JSON ফর্ম্যাটে একটি ব্যক্তিগত কী ফাইল তৈরি করতে হবে।

আপনার পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী ফাইল তৈরি করতে:

  1. ফায়ারবেস কনসোলে, সেটিংস> পরিষেবা অ্যাকাউন্ট খুলুন।

  2. জেনারেট নতুন প্রাইভেট কী ক্লিক করুন , তারপরে জেনারেট কী ক্লিক করে নিশ্চিত করুন confirm

  3. কীটি থাকা নিরাপদে জেএসএন ফাইল সংরক্ষণ করুন।

কোনও পরিষেবা অ্যাকাউন্টের মাধ্যমে অনুমোদনের সময়, আপনার অ্যাপ্লিকেশনটিতে শংসাপত্র সরবরাহ করার জন্য আপনার কাছে দুটি পছন্দ রয়েছে। আপনি হয় হয় GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন, বা আপনি কোডটি পরিষেবা অ্যাকাউন্ট কীতে স্পষ্টভাবে পথটি পাস করতে পারেন। প্রথম বিকল্পটি আরও সুরক্ষিত এবং দৃ strongly়ভাবে প্রস্তাবিত recommended

পরিবেশ পরিবর্তনশীল সেট করতে:

আপনার পরিষেবা অ্যাকাউন্ট কী রয়েছে এমন JSON ফাইলের ফাইলের পথে পরিবেশ পরিবর্তনশীল GOOGLE_APPLICATION_CREDENTIALS সেট করুন। এই ভেরিয়েবলটি কেবলমাত্র আপনার বর্তমান শেল সেশনের ক্ষেত্রে প্রযোজ্য, সুতরাং আপনি যদি নতুন সেশনটি খোলেন তবে ভেরিয়েবলটি আবার সেট করুন।

লিনাক্স বা ম্যাকোস

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

উইন্ডোজ

পাওয়ারশেলের সাথে:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

উপরের পদক্ষেপগুলি সম্পন্ন করার পরে, অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি (এডিসি) আপনার শংসাপত্রগুলিকে স্পষ্টভাবে নির্ধারণ করতে সক্ষম করে, যখন আপনাকে নন-গুগল পরিবেশে পরীক্ষা বা চলমান অবস্থায় পরিষেবা অ্যাকাউন্ট শংসাপত্রগুলি ব্যবহার করতে দেয়।

টোকেন পুদিনার জন্য শংসাপত্রগুলি ব্যবহার করুন

আপনি যদি অ্যাডমিন এসডিকে ব্যবহার না করেন, যা স্বয়ংক্রিয়ভাবে অনুমোদনের ব্যবস্থা করে, আপনি অ্যাক্সেস টোকেনটি পুদিনা এবং অনুরোধগুলি প্রেরণের জন্য এটি যুক্ত করতে হবে।

স্বল্প-কালীন OAuth 2.0 অ্যাক্সেস টোকেনটি পুনরুদ্ধার করতে আপনার পছন্দের ভাষার জন্য Google API ক্লায়েন্ট লাইব্রেরির সাথে একসাথে আপনার ফায়ারবেস শংসাপত্রগুলি ব্যবহার করুন:

node.js

 function getAccessToken() {
  return new Promise(function(resolve, reject) {
    const key = require('../placeholders/service-account.json');
    const jwtClient = new google.auth.JWT(
      key.client_email,
      null,
      key.private_key,
      SCOPES,
      null
    );
    jwtClient.authorize(function(err, tokens) {
      if (err) {
        reject(err);
        return;
      }
      resolve(tokens.access_token);
    });
  });
}

এই উদাহরণে, গুগল এপিআই ক্লায়েন্ট লাইব্রেরি একটি JSON ওয়েব টোকেন, বা JWT দিয়ে অনুরোধটি অনুমোদন করে। আরও তথ্যের জন্য, JSON ওয়েব টোকেন দেখুন

পাইথন

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

জাভা

private static String getAccessToken() throws IOException {
  GoogleCredential googleCredential = GoogleCredential
      .fromStream(new FileInputStream("service-account.json"))
      .createScoped(Arrays.asList(SCOPES));
  googleCredential.refreshToken();
  return googleCredential.getAccessToken();
}

আপনার অ্যাক্সেস টোকেনের মেয়াদ শেষ হওয়ার পরে, টোকেন রিফ্রেশ পদ্ধতিটি আপডেট অ্যাক্সেস টোকেন পুনরুদ্ধার করতে স্বয়ংক্রিয়ভাবে কল করা হয়।

FCM- এ অ্যাক্সেস অনুমোদিত করার জন্য, সুযোগটি https://www.googleapis.com/auth/firebase.messaging জন্য অনুরোধ করুন।

কোনও HTTP অনুরোধ শিরোনামে অ্যাক্সেস টোকন যুক্ত করতে:

Authorization বিন্যাসে Authorization: Bearer <access_token> শিরোনামের মান হিসাবে টোকেন যুক্ত করুন Authorization: Bearer <access_token> :

node.js

headers: {
  'Authorization': 'Bearer ' + accessToken
}

পাইথন

18 ডিএফ 80 বি 214

জাভা

URL url = new URL(BASE_URL + FCM_SEND_ENDPOINT);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestProperty("Authorization", "Bearer " + getAccessToken());
httpURLConnection.setRequestProperty("Content-Type", "application/json; UTF-8");
return httpURLConnection;

উত্তরাধিকার প্রোটোকল প্রেরণের অনুরোধগুলি অনুমোদন করুন

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

উত্তরাধিকার সার্ভার কীগুলি স্থানান্তর করুন

2020 মার্চ থেকে শুরু করে, এফসিএম লেগ্যাসি সার্ভার কীগুলি তৈরি করা বন্ধ করে দিয়েছে। বিদ্যমান লিগ্যাসি সার্ভার কীগুলি কাজ করা চালিয়ে যাবে, তবে আমরা আপনাকে প্রস্তাব দিই যে পরিবর্তে ফায়ারবেস কনসোলে আপনি কী লেবেলযুক্ত সার্ভার কী এর নতুন সংস্করণটি ব্যবহার করুন।

আপনি যদি কোনও বিদ্যমান লিগ্যাসি সার্ভার কী মুছতে চান তবে আপনি গুগল ক্লাউড কনসোলে এটি করতে পারেন।

HTTP অনুরোধ অনুমোদিত করুন

একটি বার্তার অনুরোধে দুটি অংশ থাকে: HTTP শিরোনাম এবং এইচটিটিপি বডি। এইচটিটিপি শিরোনামে অবশ্যই নিম্নলিখিত শিরোনামগুলি থাকতে পারে:

  • Authorization : কী = YOUR_SERVER_KEY
    নিশ্চিত করুন যে এটি সার্ভার কী, যার মান ফায়ারবেস কনসোল সেটিংস ফলকের ক্লাউড মেসেজিং ট্যাবে উপলব্ধ। অ্যান্ড্রয়েড, আইওএস এবং ব্রাউজার কীগুলি এফসিএম দ্বারা প্রত্যাখ্যান করা হয়।
  • Content-Type : application/json জন্য application/json ; application/x-www-form-urlencoded;charset=UTF-8 সরল পাঠ্যের জন্য।
    যদি Content-Type বাদ দেওয়া হয় তবে ফর্ম্যাটটি সরল পাঠ্য হিসাবে ধরে নেওয়া হবে।

উদাহরণ স্বরূপ:

Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
  "data" : {
    ...
  },
}

অনুরোধ প্রেরণের অনুরোধ তৈরির বিষয়ে সম্পূর্ণ বিবরণের জন্য বিল্ড প্রেরণ অনুরোধগুলি দেখুন। লিগ্যাসি এইচটিটিপি প্রোটোকল রেফারেন্স আপনার বার্তায় থাকা সমস্ত পরামিতিগুলির একটি তালিকা সরবরাহ করে।

সার্ভার কীটির বৈধতা পরীক্ষা করা হচ্ছে

আপনি বার্তা প্রেরণের সময় যদি প্রমাণীকরণের ত্রুটিগুলি পান তবে আপনার সার্ভার কীটির বৈধতা পরীক্ষা করুন। উদাহরণস্বরূপ, লিনাক্সে, নিম্নলিখিত কমান্ডটি চালান:

api_key=YOUR_SERVER_KEY

curl --header "Authorization: key=$api_key" \
     --header Content-Type:"application/json" \
     https://fcm.googleapis.com/fcm/send \
     -d "{\"registration_ids\":[\"ABC\"]}"

যদি আপনি একটি 401 HTTP স্থিতি কোড পান তবে আপনার সার্ভার কীটি বৈধ নয়।

একটি এক্সএমপিপি সংযোগ অনুমোদিত করুন

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

আপনি এফসিএম-এর দীর্ঘকালীন সংযোগ পরিচালনা করতে বেশিরভাগ এক্সএমপিপি লাইব্রেরি ব্যবহার করতে পারেন। এক্সএমপিপি শেষ পয়েন্ট fcm-xmpp.googleapis.com:5235fcm-xmpp.googleapis.com:5235 । অ-উত্পাদক ব্যবহারকারীদের সাথে কার্যকারিতা পরীক্ষা করার সময়, আপনাকে পরিবর্তে fcm-xmpp.googleapis.com:5236 এ প্রাক-উত্পাদন সার্ভারের সাথে সংযোগ করা উচিত (ভিন্ন পোর্টটি নোট করুন)।

প্রাক-উত্পাদন সম্পর্কে নিয়মিত পরীক্ষা করা (একটি ছোট পরিবেশ যেখানে সর্বশেষতম এফসিএম চালিত হয়) পরীক্ষার কোড থেকে প্রকৃত ব্যবহারকারীদের বিচ্ছিন্ন করার জন্য উপকারী। পরীক্ষার ডিভাইস এবং টেস্ট কোডটি fcm-xmpp.googleapis.com:5236 সংযোগ fcm-xmpp.googleapis.com:5236 উত্পাদন ব্যবহারকারীদের কাছে পরীক্ষার বার্তা প্রেরণ বা পরীক্ষামূলক সংযোগের মাধ্যমে উত্পাদন ট্র্যাফিক থেকে প্রবাহের বার্তা প্রেরণের কোনও ঝুঁকি এড়াতে একটি আলাদা এফসিএম প্রেরক আইডি ব্যবহার করা উচিত।

সংযোগটির দুটি গুরুত্বপূর্ণ প্রয়োজনীয়তা রয়েছে:

  • আপনার অবশ্যই একটি ট্রান্সপোর্ট লেয়ার সিকিউরিটি (টিএলএস) সংযোগ শুরু করতে হবে। নোট করুন যে এফসিএম বর্তমানে STARTTLS এক্সটেনশানটিকে সমর্থন করে না।
  • FCM এর জন্য একটি <your_FCM_Sender_Id>@fcm.googleapis.com (এফসিএম প্রেরক ID ) এবং সার্ভার কী ব্যবহার করে একটি এসএএসএল প্লেন প্রমাণীকরণ প্রক্রিয়া প্রয়োজন। এই মানগুলি ফায়ারবেস কনসোল সেটিংস ফলকের ক্লাউড মেসেজিং ট্যাবে উপলব্ধ।

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

নিম্নলিখিত স্নিপেটগুলি এফসিএমের সাথে এক্সএমপিপি সংযোগের জন্য কীভাবে প্রমাণীকরণ এবং অনুমোদন সম্পাদন করতে পারে তা চিত্রিত করে।

এক্সএমপিপি সার্ভার

এক্সএমপিপি সার্ভার এফসিএমের সাথে সংযোগের অনুরোধ করেছে

<stream:stream to="fcm.googleapis.com"
        version="1.0" xmlns="jabber:client"
        xmlns:stream="http://etherx.jabber.org/streams">

এফসিএম

এফসিএম সংযোগটি খোলে এবং PLAIN পদ্ধতি সহ একটি লেখক ব্যবস্থার জন্য অনুরোধ করে।

31f531561 বি

এক্সএমপিপি সার্ভার

এক্সএমপিপি সার্ভারটি অবশ্যই PLAIN প্রমাণীকরণ পদ্ধতি ব্যবহার করে PLAIN কনসোল সেটিংস ফলকের ক্লাউড মেসেজিং ট্যাব থেকে সার্ভার কী সরবরাহ করে respond

<auth mechanism="PLAIN"
xmlns="urn:ietf:params:xml:ns:xmpp-sasl">MTI2MjAwMzQ3OTMzQHByb2plY3RzLmdjbS5hb
mFTeUIzcmNaTmtmbnFLZEZiOW1oekNCaVlwT1JEQTJKV1d0dw==</auth>

এফসিএম

<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>

এক্সএমপিপি সার্ভার

<stream:stream to="fcm.googleapis.com"
        version="1.0" xmlns="jabber:client"
        xmlns:stream="http://etherx.jabber.org/streams">

এফসিএম

<stream:features>
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>
  <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>
</stream:features>

এক্সএমপিপি সার্ভার

<iq type="set">
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"></bind>
</iq>

এফসিএম

<iq type="result">
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
    <jid>SENDER_ID@fcm.googleapis.com/RESOURCE</jid>
  </bind>
</iq>

দ্রষ্টব্য: বার্তা পাঠানোর সময় এফসিএম বাউন্ড রিসোর্স ব্যবহার করে না।

অনুরোধ প্রেরণের অনুরোধ তৈরির বিষয়ে সম্পূর্ণ বিবরণের জন্য বিল্ড প্রেরণ অনুরোধগুলি দেখুন। লিগ্যাসি এক্সএমপিপি প্রোটোকল রেফারেন্স আপনার বার্তায় থাকা সমস্ত পরামিতিগুলির একটি তালিকা সরবরাহ করে।