مدیریت عامل‌ها

عامل «سرویس‌های ارتباطی غنی ویژه کسب‌وکارها» نهاد مکالمه‌ای است که نمانام شما را نمایندگی می‌کند و با کاربران تعامل دارد. می‌توانید از RBM Management 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 Management 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);
});

جاوا

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);
});

جاوا

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);
});

جاوا

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);
});

جاوا

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 Management 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);
});

جاوا

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 را با شیئی که حاوی نقشه فقط کلیدها برای همه مناطقی است که می‌خواهید عامل در آن‌ها راه‌اندازی شود فراخوانی کنید. استفاده از نقشه خالی به حفظ سازگاری میانای برنامه‌سازی کاربردی داخلی در اشیای استفاده‌شده بین تماس‌های میانای برنامه‌سازی کاربردی کمک می‌کند.

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 را با شیئی که حاوی نقشه فقط کلیدهای همه مناطقی است که عامل در آن‌ها قبلاً راه‌اندازی شده است و همه مناطقی که عامل می‌خواهد در آن‌ها راه‌اندازی شود، فراخوانی کنید. استفاده از نقشه خالی امکان حفظ سازگاری داخلی میانای برنامه‌سازی کاربردی را در اشیاء استفاده‌شده بین تماس‌های میانای برنامه‌سازی کاربردی فراهم می‌کند.

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);
});

جاوا

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);
});

جاوا

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);
});

جاوا

روش `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 ویژه کسب‌وکارها» تماس بگیرید.

بایگانی کردن یا لغو بایگانی کردن کارگزاران

برای حفظ فضای کاری پاک و سازمان‌یافته، می‌توانید کارگزارانی را که دیگر استفاده نمی‌شوند بایگانی کنید. بایگانی کردن عامل آن را از نتایج پیش‌فرض شناسایی API پنهان می‌کند.

بایگانی کردن فقط تغییر در رؤیت‌پذیری است. این کار باعث حذف نماینده یا تأثیرگذاری بر وضعیت راه‌اندازی زیربنایی آن نمی‌شود. هرزمان بخواهید می‌توانید نماینده‌ای را از بایگانی خارج کنید تا نمایان بودن آن را بازیابی کنید و مدیریت را ادامه دهید.

برای اطمینان از اینکه نمایندگان فعال به‌طور تصادفی پنهان نمی‌شوند، قوانین زیر اعمال می‌شود:

  • واجدشرایط بودن: فقط می‌توانید کارگزارانی را بایگانی کنید که در وضعیت غیرفعال باشند: UNLAUNCHED، SUSPENDED، یا REJECTED.
  • محدودیت‌ها: نمی‌توانید کارگزاری را که LAUNCHED یا PENDING در هر حاملی است بایگانی کنید. اگر بخواهید چنین کارگزاری را بایگانی کنید، درخواست با خطا رد خواهد شد.

به‌روزرسانی وضعیت بایگانی

برای بایگانی کردن یا لغو بایگانی کردن عامل، از روش وصله استفاده کنید. برای مشخص کردن فیلدی که به‌روزرسانی می‌شود، باید پارامتر 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