處理動作 - JavaScript

JavaScript SDK 引進了一個基底 Action 類別和一組專用動作類別,所有這些類別都繼承自 Action,並對應至自適應卡片架構中定義的各種動作類型: | Schema 類型名稱 | JavaScript 類別 | | --- | --- | | Action.OpenUrl | OpenUrlAction | | Action.ShowCard | ShowCardAction | | Action.ToggleVisibility | ToggleVisibilityAction | | Action.Submit | SubmitAction |

當使用者按下動作按鈕時處理動作

若要使用 JavaScript SDK 處理動作執行,應用程式應該為全域 AdaptiveCard.onExecuteAction 事件或個別卡片 adaptiveCardInstance.onExecuteAction 事件提供處理程式。 不論要執行的動作類型為何,都會叫用事件處理程式,而且應用程式必須負責測試要執行的動作類型,並執行適當的程序代碼。 一般而言,應用程式只需要明確處理 SubmitAction,因為 SDK 會自動處理其他動作類型。

範例

// Create an AdaptiveCard instance
let adaptiveCard = new AdaptiveCard();

// Parse a card payload - this is just a very simple example
adaptiveCard.parse(
    {
        "type": "AdaptiveCard",
        "version": "1.0",
        "actions": [
            {
                "type": "Action.Submit",
                "id": "clickMe",
                "title": "Click me!"
            }
        ]
    }
)

// Provide an onExecuteAction handler to handle the Action.Submit
adaptiveCard.onExecuteAction = (action: Action) => {
    if (action instanceof SubmitAction) {
        // If you copy this code sample, remove the alert statement
        // and provide your own custom handling code
        alert("You clicked " + action.title);
    }
}

document.body.appendChild(adaptiveCard.render());

在程式代碼中執行動作

JavaScript SDK 可讓您視需要透過 Action.execute() 方法在程式碼中執行動作。

範例

function triggerAction(card: AdaptiveCard, actionId: string) {
    let action = card.getActionById(actionId);

    if (action !== undefined) {
        // Executing an action in code will trigger the
        // onExecuteAction event
        action.execute();
    }
}