এজেন্ট ম্যানেজ করা

RCS for Business এজেন্ট হল কথোপকথনের মাধ্যমে আপনার ব্র্যান্ডের প্রতিনিধিত্বকারী সত্তা এবং এটি ব্যবহারকারীদের সাথে ইন্টার‍্যাক্ট করে। আপনি RBM ম্যানেজমেন্ট API ব্যবহার করে এজেন্ট তৈরি করতে, যাচাইকরণ ও লঞ্চের জন্য জমা দিতে এবং সামগ্রিক লাইফসাইকেল ম্যানেজ করতে পারবেন। যেহেতু প্রতিটি এজেন্টকে অবশ্যই কোনও মালিকানাধীন ব্র্যান্ডের হতে হবে, তাই এজেন্ট তৈরি করার আগে আপনাকে একটি ব্র্যান্ড তৈরি করতে হবে ।

এই পৃষ্ঠায় দেওয়া কোড স্নিপেট Java স্যাম্পেল ও Node.js স্যাম্পেল থেকে নেওয়া হয়েছে।

এজেন্ট তৈরি ও সংজ্ঞা

এজেন্ট তৈরি করা

RBM এজেন্ট তৈরি করতে, আপনাকে এর প্রাথমিক তথ্য নির্ধারণ করতে হবে।

আরও বিবরণের জন্য, brands.agents.create দেখুন।

cURL

curl -v -X POST "https://businesscommunications.googleapis.com/v1/$BRAND_ID/agents" \
  -H "Content-Type: application/json" \
  -H "User-Agent: curl/business-messaging" \
  -H "`oauth2l header --json rbm-developer-service-account-credentials.json businesscommunications`" \
  -d "{
    'displayName': 'My test agent',
    'rcsBusinessMessagingAgent': {
      'description': 'My agent description',
      'logoUri': 'https://agent-logos.storage.googleapis.com/_/kt90w53vzw2QSxK6PG1uCeJf',
      'heroUri': 'https://agent-logos.storage.googleapis.com/_/kt90vzob74GQcfeHoEQbVRTP',
      'phoneNumbers': [
        {
            'phoneNumber': {
                'number': '+44800088088'
            },
            'label': 'My number'
        }
      ],
      'emails': [
        {
            'address': 'support@demo.test',
            'label': 'My email'
        }
      ],
      'websites': [
        {
            'uri': 'https://a.demo.test/',
            'label': 'My site'
        }
      ],
      'privacy': {
        'uri': 'https://a.demo.test/privacy',
        'label': 'My privacy policy'
      },
      'termsConditions': {
        'uri': 'https://a.demo.test/terms',
        'label': 'My terms'
      },
      'color': '#FFFFFF',
      'billingConfig': {
        'billingCategory': 'CONVERSATIONAL'
      },
      'agentUseCase': 'TRANSACTIONAL',
      'hostingRegion': 'EUROPE'
    }
  }"
এই কোডটি আমাদের RBM ম্যানেজমেন্ট API স্যাম্পেল থেকে নেওয়া হয়েছে।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

const newAgentDetails = {
  displayName: 'My new agent',
  name: brandId + '/agents/',
  rcsBusinessMessagingAgent: {
    description: 'This is the agent description that will be displayed in the Agent info tab in Messages',
    logoUri: 'https://agent-logos.storage.googleapis.com/_/kt90w53vzw2QSxK6PG1uCeJf',
    heroUri: 'https://agent-logos.storage.googleapis.com/_/kt90vzob74GQcfeHoEQbVRTP',
    phoneNumbers: [
      {
        phoneNumber: {
          number: '+12223334444'
        },
        label: 'Call support'
      }
    ],
    // It's recommended to provide at least one contact method (phone or email) because
    // this is required for launch. For any phone, email, or website provided, a corresponding label
    // must also be included.
    privacy: {
      "uri": 'https://policies.google.com/privacy',
      "label": 'Our privacy policy'
    },
    termsConditions: {
      "uri": 'https://policies.google.com/terms',
      "label": 'Our Terms and Conditions'
    },
    color: '#0B78D0',
    billingConfig: { billingCategory: 'NON_CONVERSATIONAL' },
    agentUseCase: 'TRANSACTIONAL',
    hostingRegion: 'EUROPE'
  }
};

businessCommunicationsApiHelper.createAgent(brandId, newAgentDetails).then((response) => {

}).catch((err) => {
  console.log(err);
});

Java

Brand brand = api.getBrand(brandId);
logger.info("Brand to operate on: " + brand);
String displayName = flags.getOrDefault("agent_name", "Test RBM Agent: " + now.getSecond());
String suffix = flags.getOrDefault("agent_data_suffix", "API");
RcsBusinessMessagingAgent agentData = AgentFactory.createRbmAgent(suffix);
Agent agent = api.createRbmAgent(brand, displayName, agentData);
logger.info("RBM agent has been created: " + agent);

এই কোডটি নতুন এজেন্টের তথ্য এবং এজেন্টের জন্য অ্যাসাইন করা অনন্য শনাক্তকারী রিটার্ন করে:

{
  name: 'brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_dxuewtvy_agent',
  displayName: 'My new agent',
  rcsBusinessMessagingAgent: {
    description: 'This is the agent description that will be displayed in the Agent info tab in Messages',
    logoUri: 'https://agent-logos.storage.googleapis.com/_/kt90w53vzw2QSxK6PG1uCeJf',
    heroUri: 'https://agent-logos.storage.googleapis.com/_/kt90vzob74GQcfeHoEQbVRTP',
    phoneNumbers: [ [Object] ],
    privacy: {
      uri: 'https://policies.google.com/privacy',
      label: 'Our privacy policy'
    },
    termsConditions: {
      uri: 'https://policies.google.com/terms',
      label: 'Our Terms and Conditions'
    },
    color: '#0B78D0',
    billingConfig: { billingCategory: 'NON_CONVERSATIONAL' },
    agentUseCase: 'MULTI_USE',
    hostingRegion: 'EUROPE'
  }
}

এজেন্ট সংজ্ঞা খোঁজা

আপনি এজেন্টের অনন্য শনাক্তকারী (name) নির্দিষ্ট করে সেটি রিট্রিভ করতে পারবেন। আরও বিবরণের জন্য, brands.agents.list দেখুন।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

// Retrieve details of the first agent (if one has already been created)
businessCommunicationsApiHelper.getAgent(agent.name).then((response) => {

}).catch((err) => {
  console.log(err);
});

Java

Agent agent = api.getAgent(flags.get("agent_id"));
logger.info("Agent: " + agent);

এই কোডটি এজেন্টের তথ্য রিটার্ন করে:

{
  name: 'brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_dxuewtvy_agent',
  displayName: 'My new agent',
  rcsBusinessMessagingAgent: {
    description: 'This is the agent description that will be displayed in the Agent info tab in Messages',
    logoUri: 'https://agent-logos.storage.googleapis.com/_/kt90w53vzw2QSxK6PG1uCeJf',
    heroUri: 'https://agent-logos.storage.googleapis.com/_/kt90vzob74GQcfeHoEQbVRTP',
    phoneNumbers: [ [Object] ],
    privacy: {
      uri: 'https://policies.google.com/privacy',
      label: 'Our privacy policy'
    },
    termsConditions: {
      uri: 'https://policies.google.com/terms',
      label: 'Our Terms and Conditions'
    },
    color: '#0B78D0',
    billingConfig: { billingCategory: 'NON_CONVERSATIONAL' },
    agentUseCase: 'MULTI_USE',
    hostingRegion: 'EUROPE'
  }
}

যাচাইকরণ ও লঞ্চ

যাচাইকরণ সংক্রান্ত তথ্য জমা দিন

এজেন্ট লঞ্চ করার জন্য ব্র্যান্ড যাচাইকরণ প্রয়োজন। লঞ্চ করার অনুরোধ জানানোর আগে আপনাকে অবশ্যই যাচাইকরণ সংক্রান্ত তথ্য জমা দিতে হবে। মনে রাখবেন, লঞ্চের অনুরোধ করার আগে আপনাকে ব্র্যান্ডের অনুমোদনের জন্য অপেক্ষা করতে হবে না; লঞ্চের অনুমোদন প্রসেসের অংশ হিসেবে ব্র্যান্ডের অনুমোদন প্রদান করা হয়। নির্দিষ্ট কিছু পরিষেবা প্রদানকারীর ক্ষেত্রে, আপনাকে অবশ্যই যাচাইকরণ কর্তৃপক্ষের ইস্যু করা একটি বৈধ যাচাইকরণ টোকেনও প্রদান করতে হবে।

আরও বিবরণের জন্য, brands.agents.requestVerification দেখুন।

cURL

curl -v "https://businesscommunications.googleapis.com/v1/brands/$BRAND_ID/agents/$AGENT_ID:requestVerification" \
-H "Content-Type: application/json" \
-H "x-http-method-override: POST" \
-H "User-Agent: curl/business-messaging" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
  'agentVerificationContact': {
     ...
   },
   'agentVerificationToken':
     {'tokenBase64Encoded': '$TOKEN'}
}"

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

let agentVerificationContact = {
  partnerName: 'Alice',
  partnerEmailAddress: 'alice@thepartner.com',
  brandContactName: 'Bob',
  brandContactEmailAddress: 'bob@thebrand.com',
  brandWebsiteUrl: 'https://thebrand.com/'
};

businessCommunicationsApiHelper.verifyAgent(agent.name, agentVerificationContact).then((response) => {

}).catch((err) => {
  console.log(err);
});

Java

AgentVerificationContact contact = AgentFactory.createRbmAgentVerification();
AgentVerification verification = api.requestAgentVerification(agent.getName(), contact);
logger.info("Verification requested: " + verification);

এই কোড যাচাইকরণ সংক্রান্ত তথ্য রিটার্ন করে:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_ciymyd2b_agent",
  "verificationState": "VERIFICATION_STATE_UNVERIFIED",
  "agentVerificationContact": {
    "partnerName": "Alice",
    "partnerEmailAddress": "alice@thepartner.com",
    "brandContactName": "Bob",
    "brandContactEmailAddress": "bob@thebrand.com",
    "brandWebsiteUrl": "https://thebrand.com/"
  },
  "agentVerificationTokens": [
    {
      "verificationAuthorityDisplayName": "Example Verification Authority",
      "expirationTime": "2027-06-16T13:45:14Z",
      "status": "ACTIVE",
      "countryCode": "US",
      "tokenBase64Encoded": "...",
      "certificateChainUri": "https://rbm.goog/certificates?v=5&kid=6CAE185529AABAC216565E99A8DE22504B086209"
    }
  ]
}

কোনও এজেন্টের যাচাইকরণ সংক্রান্ত তথ্য দেখা

আপনি এজেন্টের ব্র্যান্ড যাচাইকরণের স্ট্যাটাস ফিরিয়ে আনতে পারবেন। আরও বিবরণের জন্য, brands.agents.getVerification দেখুন।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

businessCommunicationsApiHelper.getAgentVerification(agent.name).then((response) => {

}).catch((err) => {
  console.log(err);
});

Java

AgentVerification verification = api.getAgentVerification(agent.getName());
logger.info("RBM agent verification: " + verification);

এই কোড যাচাইকরণ স্ট্যাটাস ও পার্টনার সংক্রান্ত তথ্য রিটার্ন করে:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_ciymyd2b_agent/verification",
  "verificationState": "VERIFICATION_STATE_UNVERIFIED",
  "agentVerificationContact": {
    "partnerName": "John Doe",
    "partnerEmailAddress": "john.doe@gmail.com",
    "brandContactName": "Bob",
    "brandContactEmailAddress": "bob@brand.com",
    "brandWebsiteUrl": "https://www.brand.com"
  },
  "agentVerificationTokens": [
    {
      "verificationAuthorityDisplayName": "Example Verification Authority",
      "expirationTime": "2027-06-16T13:45:14Z",
      "status": "ACTIVE",
      "countryCode": "US",
      "tokenBase64Encoded": "...",
      "certificateChainUri": "https://rbm.goog/certificates?v=5&kid=6CAE185529AABAC216565E99A8DE22504B086209"
    }
  ]
}

যাচাইকরণ টোকেন আপডেট ও মুছে দেওয়া

আপনার আগে থেকেই লঞ্চ করা এজেন্ট থাকলে, আপনি যাচাইকরণ টোকেন দিয়ে সেটি আপডেট করতে পারবেন। টোকেন যোগ বা আপডেট করতে, updateVerification মেথড কল করুন (PATCH অনুরোধ ব্যবহার করে) এবং agent_verification_tokens আপডেট মাস্ক নির্দিষ্ট করুন।

cURL

curl -v -X PATCH "https://businesscommunications.googleapis.com/v1/brands/$BRAND_ID/agents/$AGENT_ID/verification?updateMask=agent_verification_tokens" \
-H "Content-Type: application/json" \
-H "x-http-method-override: PATCH" \
-H "User-Agent: curl/business-messaging" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
   'agentVerificationTokens': [
     {'tokenBase64Encoded': '$TOKEN'}
   ]
}"

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

কোনও এজেন্টের সাথে যুক্ত সব টোকেন মুছে দিতে, আপনার PATCH অনুরোধে একটি খালি তালিকা পাঠান:

cURL

curl -v -X PATCH "https://businesscommunications.googleapis.com/v1/brands/$BRAND_ID/agents/$AGENT_ID/verification?updateMask=agent_verification_tokens" \
-H "Content-Type: application/json" \
-H "x-http-method-override: PATCH" \
-H "User-Agent: curl/business-messaging" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{}"

যাচাইকরণ টোকেন সংক্রান্ত সমস্যার সমাধান করা

যাচাইকরণ টোকেন ম্যানেজ করা ও লঞ্চের অনুরোধ করার সময়, আপনি নিম্নলিখিত সমস্যাগুলি দেখতে পেতে পারেন:

  • লঞ্চের জন্য টোকেন নেই: আপনি যদি এমন কোনও ক্যারিয়ারে লঞ্চ করার অনুরোধ করেন যার টোকেন প্রয়োজন, কিন্তু এজেন্টের কাছে সেটি না থাকে, তাহলে আপনি 400 error (যেমন, "Verification token matching agent <...> and carrier country US is missing") পাবেন।
  • এজেন্টের ডেটা না মেলা: আপনার এজেন্টের প্রোফাইলে এজেন্ট আইডি, এজেন্টের নাম, লোগো ও ব্যানার টোকেনে এম্বেড করা ডেটার সাথে হুবহু মিলতে হবে। আপনি যদি ম্যাচ করে না এমন টোকেন অ্যাটাচ করার চেষ্টা করেন অথবা ম্যাচ না করা টোকেন দিয়ে লঞ্চ করার অনুরোধ করেন, তাহলে আপনি 400 error (যেমন, "Agent ID mismatch. Request agent ID: <...>, Token agent ID: <...>") পাবেন।

লঞ্চ করার জন্য এজেন্ট জমা দিন

আপনি এক বা একাধিক পরিষেবা প্রদানকারীর জন্য লঞ্চ করার জন্য এজেন্ট জমা দিতে পারেন। কিছু লঞ্চ Google ম্যানেজ করে এবং অন্যান্য লঞ্চ সরাসরি পরিষেবা প্রদানকারী ম্যানেজ করে। ক্যারিয়ার-ম্যানেজড লঞ্চের জন্য অতিরিক্ত প্রয়োজনীয়তা থাকতে পারে। আরও তথ্যের জন্য Google-ম্যানেজ করা বনাম পরিষেবা প্রদানকারী-ম্যানেজ করা লঞ্চ দেখুন।

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

যাচাইকরণের তথ্য জমা দেওয়া ও লঞ্চের পূর্বশর্ত সম্পূর্ণ করা হয়ে গেলে, আপনি লঞ্চ করার অনুরোধ জমা দিতে পারবেন।

আপনি এক বা একাধিক পরিষেবা প্রদানকারীর জন্য লঞ্চ করার জন্য এজেন্ট জমা দিতে পারেন। লঞ্চের অনুরোধের অংশ হিসেবে সম্পূর্ণ লঞ্চ সংক্রান্ত প্রশ্নাবলী প্রদান করতে হবে। আরও বিবরণের জন্য, brands.agents.requestLaunch দেখুন।

cURL

curl -v -X POST "https://businesscommunications.googleapis.com/v1/$AGENT_ID:requestLaunch" \
  -H "Content-Type: application/json" \
  -H "User-Agent: curl/business-messaging" \
  -H "`oauth2l header --json rbm-developer-service-account-credentials.json businesscommunications`" \
  -d "{
    'agentLaunch': {
      'rcsBusinessMessaging': {
        'questionnaire': {
          'contacts': [
            {
              'name': 'John Doe',
              'title': 'Product Owner',
              'email': 'support@demo.test'
            }
          ],
          'optinDescription': 'Thanks for your request.',
          'triggerDescription': 'Promotional messages will be triggered in a timely manner.',
          'interactionsDescription': 'Promotional messages are one way.',
          'optoutDescription': 'Sorry to see you go.',
          'agentAccessInstructions': 'Thanks for your request.',
          'videoUris': [
            'https://d2q4iodazzzt8b.cloudfront.net/MicrosoftTeamsvideo2_1758533835.mp4'
          ],
          'screenshotUris': [
            'https://rm.virbm.com/Il9ChvVEhS1na5mr/ee9bc94b468a40688fb7fc71cb1c069c.png'
          ]
        },
        'launchDetails': {
          '/v1/regions/$CARRIER_ID': {}
        }
      }
    }
  }"
এই কোডটি আমাদের RBM ম্যানেজমেন্ট API স্যাম্পেল থেকে নেওয়া হয়েছে।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);
  
let agentLaunch = {
  questionnaire: {
    contacts: [
      {
        name: 'James Bond',
        title: 'Mr 0 0 7',
        email: 'someone@somewhere.com'
      }
    ],
    optinDescription: 'Users accepted our terms of service online.',
    triggerDescription: 'We are reaching preregistered users',
    interactionsDescription: 'This agent does not do much.',
    optoutDescription: 'Reply stop and we stop.',
    agentAccessInstructions: 'This is a a simple agent that reaches registered users.',
    videoUris: [
      'https://www.google.com/a/video'
    ],
    screenshotUris: [
      'https://www.google.com/a/screenshot'
    ]
  },
  launchDetails: {}
};

businessCommunicationsApiHelper.launchAgent(agent.name, agentLaunch).then((response) => {

}).catch((err) => {
  console.log(err);
});

Java

Optional<Questionnaire> q = Optional.of(AgentFactory.createRbmQuestionnaire());
AgentLaunch launch = api.requestRbmAgentLaunch(agent.getName(), regionIds, q);
logger.info("RBM agent updated launch: " + launch);

এই কোডটি এজেন্ট লঞ্চ সংক্রান্ত তথ্য রিটার্ন করে:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_7jo0trhw_agent/launch",
  "rcsBusinessMessaging": {
    "questionnaire": {
      "contacts": [
        {
          "name": "James Bond",
          "title": "Mr O O 7",
          "email": "someone@somewhere.com"
        }
      ],
      "optinDescription": "Users accepted our terms of service online.",
      "triggerDescription": "We are reaching preregistered users",
      "interactionsDescription": "This agent does not do much.",
      "optoutDescription": "Reply stop and we stop.",
      "agentAccessInstructions": "This is a a simple agent that reaches registered users.",
      "videoUris": [
        "https://www.google.com/a/video"
      ],
      "screenshotUris": [
        "https://www.google.com/a/screenshot"
      ]
    },
    "launchDetails": {
      "/v1/regions/some-carrier": {
        "launchState": "LAUNCH_STATE_PENDING",
        "updateTime": "2023-02-24T15:02:13.903554Z"
      }
    },
    "launchRegion": "NORTH_AMERICA"
  }
}

মনে রাখবেন, launchRegion বন্ধ করা হয়েছে এবং শীঘ্রই সরিয়ে দেওয়া হবে।

এক বা একাধিক অঞ্চলে এজেন্ট লঞ্চ করা

এক বা একাধিক অঞ্চলে এজেন্ট লঞ্চ করতে, যদি এজেন্ট আগে লঞ্চ না হয়ে থাকে, তাহলে requestLaunch মেথড কল করুন। এই মেথডে এমন একটি অবজেক্ট থাকতে হবে যাতে এজেন্ট লঞ্চ করতে চান এমন সব অঞ্চলের জন্য শুধুমাত্র কী সহ ম্যাপ থাকে। খালি ম্যাপ ব্যবহার করলে API কলের মধ্যে ব্যবহৃত অবজেক্টে ইন্টার্নাল API সামঞ্জস্য বজায় রাখা যায়।

curl -X POST \
"https://businesscommunications.googleapis.com/v1/brands/BRAND_ID/agents/AGENT_ID:requestLaunch" \
-H "Content-Type: application/json" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
  'name': 'brands/BRAND_ID/agents/AGENT_ID/launch',
  'rcsBusinessMessaging': {
    'questionnaire': {
      'contacts': [
        {
          'name': 'Contact person 000',
          'title': 'Contact manager 000',
          'email': 'user@domain.com000'
        }
      ],
      'optinDescription': 'Opt-in description 0',
      'triggerDescription': 'Trigger description 0',
      'optoutDescription': 'Opt-out description 0',
      'agentAccessInstructions': 'Agent instructions 0',
      'videoUris': [
        'https://www.youtube.com/watch?v=NN75im_us4k'
      ],
      'screenshotUris': [
        'https://www.youtube.com/watch?v=NN75im_us4k'
      ]
    },
    'launchDetails': {
      '/v1/regions/fi-rcs': {}
    }
  }
}"

এক বা একাধিক অঞ্চলে এজেন্ট লঞ্চ করতে (যদি এজেন্ট আগে লঞ্চ করা হয়ে থাকে ), requestLaunch মেথড কল করুন। এর সাথে এমন একটি অবজেক্ট থাকতে হবে যাতে সব অঞ্চলের শুধুমাত্র কী-এর ম্যাপ থাকবে। এই ম্যাপে সেইসব অঞ্চলও থাকবে যেখানে এজেন্ট আগে থেকেই লঞ্চ করা আছে এবং সেইসব অঞ্চলও থাকবে যেখানে এজেন্ট লঞ্চ করতে চায়। খালি ম্যাপ ব্যবহার করলে API কলের মধ্যে ব্যবহৃত অবজেক্টে ইন্টার্নাল API সামঞ্জস্য বজায় রাখা যায়।

curl -X POST \
"https://businesscommunications.googleapis.com/v1/brands/BRAND_ID/agents/AGENT_ID:requestLaunch" \
-H "Content-Type: application/json" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
  'name': 'brands/BRAND_ID/agents/AGENT_ID/launch',
  'rcsBusinessMessaging': {
    'launchDetails': {
      '/v1/regions/fi-rcs': {},
      '/v1/regions/vodafone-idea-india': {}
    }
  }
}"

কোনও এজেন্ট যদি requestLaunch মেথড কল করে, কিন্তু এজেন্টটি আগে থেকেই চালু আছে এমন সব অঞ্চলকে কী হিসেবে অন্তর্ভুক্ত না করে, তাহলে একটি 400 - Bad Request এরর দেখানো হয়।

কোনও এজেন্টের লঞ্চ স্ট্যাটাস দেখা

আপনি এজেন্টের বর্তমান লঞ্চ স্ট্যাটাস রিট্রিভ করতে পারবেন। আরও বিবরণের জন্য, brands.agents.getLaunch দেখুন।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

businessCommunicationsApiHelper.getAgentLaunch(agent.name).then((response) => {

}).catch((err) => {
  console.log(err);
});

Java

AgentLaunch launch = api.getAgentLaunch(agent.getName());
logger.info("RBM agent launch: " + launch);

কোনও লঞ্চ পরিষেবা প্রদানকারী বাতিল করে দিলে, পার্টনার সেই পরিষেবা প্রদানকারীর কাছে আবার লঞ্চ করার অনুরোধ করতে পারেন (অনুরোধের একটি UNSPECIFIED স্টেট থাকে এবং ব্যাকএন্ডে একটি REJECTED স্টেট থাকে)।

এই কোডটি প্রতিটি টার্গেট কেরিয়ারের জন্য লঞ্চ সংক্রান্ত তথ্য এবং লঞ্চের স্ট্যাটাস রিটার্ন করে:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_7jo0trhw_agent/launch",
  "rcsBusinessMessaging": {
    "questionnaire": {
      "contacts": [
        {
          "name": "James Bond",
          "title": "Mr O O 7",
          "email": "someone@somewhere.com"
        }
      ],
      "optinDescription": "Users accepted our terms of service online.",
      "triggerDescription": "We are reaching preregistered users",
      "interactionsDescription": "This agent does not do much.",
      "optoutDescription": "Reply stop and we stop.",
      "agentAccessInstructions": "This is a a simple agent that reaches registered users.",
      "videoUris": [
        "https://www.google.com/a/video"
      ],
      "screenshotUris": [
        "https://www.google.com/a/screenshot"
      ]
    },
    "launchDetails": {
      "/v1/regions/some-carrier": {
        "launchState": "LAUNCH_STATE_PENDING",
        "updateTime": "2023-02-24T15:02:13.903554Z"
      }
    },
    "launchRegion": "NORTH_AMERICA"
  }
}

মনে রাখবেন, launchRegion বন্ধ করা হয়েছে এবং শীঘ্রই সরিয়ে দেওয়া হবে।

এজেন্টের লঞ্চে অতিরিক্ত পরিষেবা প্রদানকারী যোগ করা

brands.agents.getLaunch API কল ব্যবহার করে আপনার এজেন্টের বর্তমান লঞ্চ সংক্রান্ত তথ্য পুনরুদ্ধার করার পরে, আপনার এজেন্টের রিচ বাড়াতে আপনি আরও টার্গেট করা ক্যারিয়ার যোগ করতে পারবেন। আরও বিবরণের জন্য, brands.agents.updateLaunch দেখুন।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);');

// To launch an agent to further carriers, we need to first obtain the existing
// launch information and extend it with the new carrier(s).
businessCommunicationsApiHelper.getAgentLaunch(agent.name).then((response) => {
  let existingLaunch = response.data.rcsBusinessMessaging;

  // Now we add the new carrier to the existing launch
  existingLaunch.launchDetails[config.launchCarrier2] = null;

  // And we submit the launch again
  businessCommunicationsApiHelper.launchAgent(agent.name, existingLaunch).then((response) => {
    console.log('Launch details are:');
    console.log(JSON.stringify(response.data, null, 2));
  }).catch((err) => {
    console.log(err);
  });
}).catch((err) => {
  console.log(err);
});

এই কোড আপডেট করা লঞ্চ সংক্রান্ত তথ্য রিটার্ন করে:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_7jo0trhw_agent/launch",
  "rcsBusinessMessaging": {
    "questionnaire": {
      "contacts": [
        {
          "name": "James Bond",
          "title": "Mr O O 7",
          "email": "someone@somewhere.com"
        }
      ],
      "optinDescription": "Users accepted our terms of service online.",
      "triggerDescription": "We are reaching preregistered users",
      "interactionsDescription": "This agent does not do much.",
      "optoutDescription": "Reply stop and we stop.",
      "agentAccessInstructions": "This is a a simple agent that reaches registered users.",
      "videoUris": [
        "https://www.google.com/a/video"
      ],
      "screenshotUris": [
        "https://www.google.com/a/screenshot"
      ]
    },
    "launchDetails": {
      "/v1/regions/some-carrier": {
        "launchState": "LAUNCH_STATE_PENDING",
        "updateTime": "2023-02-24T15:02:13.903554Z"
      },
      "/v1/regions/another-carrier": {
        "launchState": "LAUNCH_STATE_PENDING",
        "updateTime": "2023-02-24T15:04:50.456552Z"
      }
    },
    "launchRegion": "NORTH_AMERICA"
  }
}

লঞ্চ-পরবর্তী ও রক্ষণাবেক্ষণ

কোনও ব্র্যান্ডের জন্য তৈরি করা সব এজেন্ট তালিকাভুক্ত করা

ডেভেলপার কোনও ব্র্যান্ডের জন্য তৈরি করা সব এজেন্টের তালিকা রিট্রিভ করতে পারবেন। আরও বিবরণের জন্য, brands.agents.list দেখুন।

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

businessCommunicationsApiHelper.listAgents(brand.name).then((response) => {
  console.log('Current agents are:');
  console.log(response.data);
  datastore.saveJsonData('agents', response.data.agents);
}).catch((err) => {
  console.log(err);
});

Java

Brand brand = api.getBrand(brandId);
logger.info("Brand: " + brand);
ListAgentsResponse response = api.listAllAgents(brand);
List<Agent> agents = response.getAgents().stream()
  .sorted(Comparator.comparing(Agent::getName)).collect(Collectors.toList());
logger.info(String.format("Found %d agents", response.getAgents().size()));
for (Agent agent : agents) {
  logger.info(String.format("Agent [%s]: '%s'", agent.getName(), agent.getDisplayName()));
}

এই কোডটি ব্র্যান্ডের মালিকানাধীন সমস্ত এজেন্টের একটি তালিকা রিটার্ন করে:

{
  agents: [
    {
      name: 'brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_4fpd1psz_agent',
      displayName: 'My new agent',
      rcsBusinessMessagingAgent: [Object]
    },
    {
      name: 'brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_ciymyd2b_agent',
      displayName: 'My second agent',
      rcsBusinessMessagingAgent: [Object]
    },
    {
      name: 'brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_helof85o_agent',
      displayName: 'My third agent',
      rcsBusinessMessagingAgent: [Object]
    }
  ]
}

আর্কাইভ করা এজেন্টদের অন্তর্ভুক্ত করুন

ডিফল্ট হিসেবে, পার্টনারের আর্কাইভ করা এজেন্টদের তালিকা থেকে বাদ দেওয়া হয়। ফলাফলে আর্কাইভ করা এজেন্টদের অন্তর্ভুক্ত করতে, includeArchived প্যারামিটারকে true হিসেবে সেট করুন।

Node.js

`listAgents` পদ্ধতিতে ঐচ্ছিক কনফিগারেশন অবজেক্ট গ্রহণ করা হয় যার মধ্যে আর্কাইভ করা এজেন্ট অন্তর্ভুক্ত থাকে।
const businessCommunicationsApiHelper =
 require('@google/rbm-businesscommunications');

const privateKey =
 require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunicationsApi(privateKey);

// To list all agents including archived ones, set includeArchived to true
const listOptions = {
  includeArchived: true
};

businessCommunicationsApiHelper.listAgents(brand.name, listOptions).then((response) => {
 console.log('Current agents (including archived) are:');
 console.log(response.data);
 datastore.saveJsonData('agents', response.data.agents);
}).catch((err) => {
 console.log(err);
});

Java

`listAllAgents` পদ্ধতিতে দৃশ্যমানতা নিয়ন্ত্রণ করার জন্য একটি বুলিয়ান প্যারামিটার থাকে।
// To list all agents including archived ones, pass 'true' for the includeArchived parameter
boolean includeArchived = true;
Brand brand = api.getBrand(brandId);
logger.info("Brand: " + brand);

// Call listAllAgents with the brand and the includeArchived flag
ListAgentsResponse response = api.listAllAgents(brand, includeArchived);

List agents = response.getAgents().stream()
 .sorted(Comparator.comparing(Agent::getName)).collect(Collectors.toList());

logger.info(String.format("Found %d agents (including archived)", response.getAgents().size()));
for (Agent agent : agents) {
 logger.info(String.format("Agent [%s]: '%s' (Archived: %s)",
    agent.getName(), agent.getDisplayName(), agent.getIsArchived()));
}

এজেন্ট আনলঞ্চ করা

নির্দিষ্ট অঞ্চল থেকে কোনও এজেন্টকে আনলঞ্চ করতে, updateLaunch মেথড কল করুন, কলের ম্যাপে টার্গেট অঞ্চল নির্দিষ্ট করুন এবং launchState-কে LAUNCH_STATE_UNLAUNCHED হিসেবে সেট করুন।

curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/BRAND_ID/agents/AGENT_ID/launch" \
-H "Content-Type: application/json" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
  'rcsBusinessMessaging': {
    'launchDetails': {
      '/v1/regions/fi-rcs': {
        'launchState': 'LAUNCH_STATE_UNLAUNCHED'
      },
      '/v1/regions/vodafone-idea-india': {
        'launchState': 'LAUNCH_STATE_UNLAUNCHED'
      }
    }
  }
}"

এজেন্ট মুছে দেওয়া

নিরাপত্তার কারণে, RBM এজেন্ট আর মোছা যাবে না। সহায়তা পেতে, RCS for Business সহায়তা টিমের সাথে যোগাযোগ করুন।

এজেন্টদের আর্কাইভ বা আনআর্কাইভ করা

পরিষ্কার ও সুসংগঠিত ওয়ার্কস্পেস বজায় রাখতে, আপনি সেইসব এজেন্টকে আর্কাইভ করতে পারেন যেগুলি আর ব্যবহার করা হচ্ছে না। কোনও এজেন্ট আর্কাইভ করলে, ডিফল্ট API ডিসকভারি ফলাফল থেকে সেটি লুকানো হয়।

আর্কাইভ করা হলে শুধু দৃশ্যমানতা পরিবর্তন হয়। এটি এজেন্টকে মুছে দেয় না বা এর অন্তর্নিহিত লঞ্চ স্টেটকে প্রভাবিত করে না। আপনি যেকোনও সময় কোনও এজেন্টকে আনআর্কাইভ করে তার দৃশ্যমানতা রিস্টোর করতে এবং ম্যানেজমেন্ট চালিয়ে যেতে পারবেন।

অ্যাক্টিভ এজেন্ট যাতে ভুলবশত লুকানো না থাকে তা নিশ্চিত করতে, নিম্নলিখিত নিয়ম প্রযোজ্য হয়:

  • উপযুক্ততা: আপনি শুধুমাত্র সেইসব এজেন্টদের আর্কাইভ করতে পারবেন যারা নিষ্ক্রিয় অবস্থায় আছে: UNLAUNCHED, SUSPENDED বা REJECTED.
  • বিধিনিষেধ: আপনি এমন কোনও এজেন্টকে আর্কাইভ করতে পারবেন না যেটি কোনও পরিষেবা প্রদানকারীর সাথে LAUNCHED বা PENDING আছে। আপনি এই ধরনের কোনও এজেন্টকে আর্কাইভ করার চেষ্টা করলে, সমস্যার মেসেজ সহ অনুরোধটি বাতিল করা হবে।

আর্কাইভ স্ট্যাটাস আপডেট করা

কোনও এজেন্টকে আর্কাইভ বা আনআর্কাইভ করতে, প্যাচ পদ্ধতি ব্যবহার করুন। আপডেট করা হচ্ছে এমন ফিল্ড নির্দিষ্ট করতে, আপনাকে URL-এ updateMask=is_archived প্যারামিটার অন্তর্ভুক্ত করতে হবে। আর্কাইভ করতে, isArchived বুলিয়ানকে true হিসেবে সেট করুন এবং আনআর্কাইভ করতে, false হিসেবে সেট করুন।

পদ্ধতি: PATCH /v1/brands/{brandId}/agents/{agentId} আপডেট মাস্কে is_archived যোগ করুন।

{
  "isArchived": true
}

ফিল্টার সহ এজেন্টদের তালিকা তৈরি করা

ডিফল্ট হিসেবে, list মেথড আর্কাইভ করা এজেন্টদের লুকায়। আপনার ফলাফলে সেগুলি অন্তর্ভুক্ত করতে, include_archived প্যারামিটার ব্যবহার করুন।

পদ্ধতি: GET /v1/brands/{brandId}/agents?include_archived=true