title: toggle between transactional and promotional sms in amazon sns
body: <p><strong>TL;DR</strong> Wan't to specify <em>transactional/promotional</em> message type on the fly (as a param) without having to set the message attributes every time.</p>
  
  <p>So I want to send OTPs to customer using amazon SNS and this is the code for the following:</p>
  
  <pre><code>import boto3
  
  client = boto3.client('sns')
  response = client.publish(
                 PhoneNumber='some_phone_number',
                 Message='some_message'
             )
  </code></pre>
  
  <p>According to their <a href="https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html" rel="noreferrer">documentation</a>, there are 2 message types:<br>
   1. Transactional (Time critical delivery)<br>
   2. Promotional (Non time critical delivery and cost effective)</p>
  
  <p>I have an option to set the default message attributes using the <code>set_sms_attributes()</code> as follows:</p>
  
  <pre><code>client.set_sms_attributes(
             attributes={"DefaultSMSType": "Transactional" | "Promotional" }
  )
  </code></pre>
  
  <p>I donot wan't to keep changing this param as they are defaults. I wan't to be able to specify the message type on the fly as a parameter in <code>publish()</code></p>
  
  <p>I checked out the <code>MessageAttributes</code> but according to their <a href="https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html" rel="noreferrer">docs</a>, it's not to specify the message type but contains metadata for the client to handle the message before processing it.</p>
  
  <p>Is there a way to toggle the message type on the fly without having to set it in the default settings using the <code>set_sms_attributes</code> ?</p>