0

The Amazon Chime SDK action CallAndBridge routes the incoming call to a user.
The CallAndBridge action is returned from the SMA Lambda.

Is there a way to send the action of type CallAndBridge not from the SMA Lambda function, either some REST API or something else?

I have different flow where I need to perform some action on the incoming call and once the action that I perform is successful based on some external events, I need to call the CallAndBridge action to the Amazon Chime SDK.

From the documentation I don't see any way of doing this.
https://docs.aws.amazon.com/chime-sdk/latest/dg/call-and-bridge.html

User7723337
  • 11,857
  • 27
  • 101
  • 182

1 Answers1

1

Is there a way to send the action of type CallAndBridge not from the SMA Lambda function, either some REST API or something else?

You can achieve this by using UpdateSipMediaApplicationCall (see the doc)

Basically, what you need to do is;

  • Run your flow externally and then call UpdateSipMediaApplicationCall with your custom payload. (You can expose this code as a REST API if you want, and call it from SMA)
  • This will trigger your SMA with the payload you passed
  • In your SMA, handle new invocation (the type will be CallUpdateRequested)
  • Read your custom payload, run your business logic in SMA or return any action you want like CallAndBridge

your-external-worker.js


// This is the general idea, it might not be syntactically correct

import { ChimeSDKVoice, Endpoint } from "aws-sdk"

const endpoint = new Endpoint("https://voice-chime.YOUR-REGION.amazonaws.com")
const chimeSDK = new ChimeSDKVoice(endpoint: endpoint)

if (myConditionSatisfied) {
  const params: UpdateSipMediaApplicationCallRequest = {
    SipMediaApplicationId: 'your-sma-id',
    TransactionId: 'your-transaction-id'
    Arguments: {
      myCustomParam: 'letsTriggerCallAndBridge'
    }

  }
  await chimeSDK.updateSipMediaApplicationCall(params).promise()
}

your-sma.js


if (event.invocationType === 'CallUpdateRequested') {
  if (event.actionData.Parameters.Arguments['myCustomParam'] === 'letsTriggerCallAndBridge') {
    return actions.callAndBridge()
  }
}

Hope that helps, let me know if you need further explanation

bakayim
  • 200
  • 2
  • 9
  • So calling `UpdateSipMediaApplicationCall` externally will trigger the SMA Lambda with the provided `invocationType`. But what happens to the original call to SMA Lambda from the AWS Chime SDK? Chime SDK calls SMA Lambda every 5 seconds when there is a active call expects some action to be returned from the SMA Lambda and if we don't return any action then call is rejected? Can this flow be stopped? So that we can have custom path of sending CallAndBridge action. – User7723337 Jun 02 '23 at 06:30