Имена атрибутов сообщения, начинающиеся с ‘AWS.’ или ‘Amazon.’, зарезервированы для использования Amazon. – Nodejs

Вопрос или проблема

Я интегрирую AWS SNS для отправки сообщений на индийские мобильные номера, уже зарегистрировав свой SenderID в DLT и получив одобрение от AWS. Однако, когда я пытаюсь включить EntityID и TemplateID в свой код, как указано в инструкциях AWS, я получаю ошибку, в которой говорится: ‘Имена атрибутов сообщения, начинающиеся с ‘AWS.’ или ‘Amazon.’, зарезервированы для использования Amazon.’ Где именно мне следует включить эти идентификаторы в мой код AWS SNS, чтобы решить эту проблему?

Вот код на nodejs

const sendSnsMessage = async (message, phone) => {
  try {
    let params = {
      Message: message,
      PhoneNumber: phone,
      MessageAttributes: {
        "AWS.SNS.SMS.SMSType": {
          DataType: "String",
          StringValue: "Transactional",
        },
        "AWS.SNS.SMS.SenderID": {
          DataType: "String",
          StringValue: <my-sender-id>,
        },
        "AWS.SNS.SMS.EntityID": {
          DataType: "String",
          StringValue: <entity-id>,
        },
        "AWS.SNS.SMS.TemplateID": {
          DataType: "String",
          StringValue: <template-id>,
        },
      },
    };

    let publishCmd = new PublishCommand(params);
    let sentMsg = await SNS.send(publishCmd);
    return sentMsg;
  } catch (error) {
    console.log("errrr",error.message);
  }
};

Ответ или решение

Ваша проблема связана с ограничениями, установленными AWS для имен атрибутов сообщений. Имена атрибутов, начинающиеся с ‘AWS.’ или ‘Amazon.’, зарезервированы для использования Amazon, что означает, что вы не можете использовать их для своих собственных данных, таких как EntityID и TemplateID. Это создает определенные сложности при интеграции с AWS SNS для отправки сообщений на мобильные номера в Индии, особенно если вы уже зарегистрировали SenderID в DLT и получили одобрение от AWS.

Вот несколько важных моментов, которые следует учесть и решение, как правильно интегрировать эти идентификаторы в ваш код.

Подход к решению проблемы

  1. Понимание атрибутов сообщения: Вам нужно использовать только те атрибуты, которые разрешены. Атрибуты, начинающиеся с ‘AWS.’, предназначены только для систем и служб Amazon. Это значит, что вы должны избежать их использования в своем коде.

  2. Использование дополнительных атрибутов: Если необходимо передать EntityID и TemplateID, вы можете использовать другие наименования атрибутов, которые не начинаются с ‘AWS.’ или ‘Amazon.’. Например, вы могли бы использовать ‘Custom.EntityID’ и ‘Custom.TemplateID’ в качестве наименований для ваших собственных атрибутов.

  3. Корректировка кода: Измените ваш код на Node.js на следующее, чтобы устранить ошибку и корректно передать идентификаторы:

const sendSnsMessage = async (message, phone) => {
  try {
    let params = {
      Message: message,
      PhoneNumber: phone,
      MessageAttributes: {
        "AWS.SNS.SMS.SMSType": {
          DataType: "String",
          StringValue: "Transactional",
        },
        "AWS.SNS.SMS.SenderID": {
          DataType: "String",
          StringValue: <my-sender-id>,
        },
        "Custom.EntityID": { // Изменено
          DataType: "String",
          StringValue: <entity-id>,
        },
        "Custom.TemplateID": { // Изменено
          DataType: "String",
          StringValue: <template-id>,
        },
      },
    };

    let publishCmd = new PublishCommand(params);
    let sentMsg = await SNS.send(publishCmd);
    return sentMsg;
  } catch (error) {
    console.log("Ошибка при отправке сообщения", error.message);
  }
};

Примечания

  • Убедитесь, что вы продолжаете соблюдать правила и регламенты, касающиеся использования DLT в Индии.
  • Проводите тестирование кода для проверки корректности передачи ваших данных.
  • Обратите внимание на возможные другие ограничения, которые могут быть наложены изготовителями мобильных приложений или местными органами контроля.

Заключение

Несмотря на сложности, связанные с ограничениями на именование атрибутов, корректная модификация вашего кода позволяет передавать необходимые данные, не нарушая правил использования AWS. Убедитесь, что вы также проводите отправку сообщений в соответствии с требованиями и нормами, установленными для отправки SMS в вашей стране.

Оцените материал
Добавить комментарий

Капча загружается...