簡體   English   中英

Twilio PCI 兼容<gather>在帶有 Studio 的函數小部件中</gather>

[英]Twilio PCI Compliant <Gather> in Function Widget with Studio

我一直在這里四處閑逛,在使用這個新工具的過程中得到了大部分答案,但我現在被困住了,需要一些直接的建議。

Studio 中的 Gather 函數不符合 PCI,所以我必須將我的調用轉移到一個函數並返回解析后的數據——我終於想出了怎么做——但是,我發現我無法調用網絡服務包含在單個函數中,必須將帶有事件的數字發送到另一個函數,以便對我的令牌提供程序進行 Web 服務調用。 這有效,但它導致了一個奇怪的結果:我的令牌被讀回為 TTS,然后電話被掛斷了。 我沒有播放 TTS 動作。 以下是我的代碼集:

從 Studio 調用的初始函數:

const got = require('got');

exports.handler = function(context, event, callback) {
    let twiml = new Twilio.twiml.VoiceResponse();

    twiml.gather({
        input: 'dtmf',
        finishOnKey: '#',
        timeout: 10,
        action: 'paymenttest',
        method: 'GET'
    }).say('Enter CC');

    console.log(twiml);
    callback(null, twiml);
};

這使用輸入的數字成功調用了我的函數:

const got = require('got');

exports.handler = function(context, event, callback) {
    let twiml = new Twilio.twiml.MessagingResponse();
    const url ='my payment gateway' + event.Digits + '&EXPDATE=1220&CARDTYPE=VI';

    got.get(url, {
        headers: {
            'content-Type': 'application/x-www-form-urlencoded'
        }
    }).then(function(response) {
        // Check the response and ask your second question here
        event.callback(null, response.body);
    }).catch(function(error) {
        // Boo, there was an error.
        callback(error)
    });
};

這成功返回了令牌……但如前所述……它被讀回給我,而不是包含在返回給 Studio 的數據中。

Twilio 開發者傳播者在這里。

目前,Studio 沒有很好地設置為使用 Twilio 函數中的 TwiML,然后繼續流程。 在您的情況下,當您從第二個函數返回令牌時,Twilio 正在處理它,就像您剛剛將文本返回到常規 TwiML webhook 一樣。 發生這種情況時,Twilio 默認假設您的意思是<Say>並讀出文本。

雖然團隊致力於將呼叫重定向回 Studio 流程,但有一個解決方法。

不是在第二個函數中返回令牌,而是返回一些包含<Redirect>的 TwiML 到您的 Studio 流的 webhook URL 並附加?FlowEvent=audioComplete 您還需要在 Function 小部件之后添加一個虛擬的 Say/Play 小部件(它成為流程中可以觸發“音頻完成”消息的下一個部分,因此存在以收集它並發送到下一個小部件)。

我們在解決方法中唯一沒有處理的是將令牌發送到流。 我不相信我們可以通過這種重定向解決方法來做到這一點,所以我建議將令牌存儲在您自己的數據庫或類似Twilio Sync對象的東西中。 這樣您就可以隨心所欲地在 Studio 之外使用它。 如果您在 Studio 流中需要它,那么您可以再創建一個以 JSON 形式返回令牌的函數,然后將其存儲在流變量中。

如果您更願意使用<Pay> ,因為這會容易得多,我還建議請求您需要的支付連接器

我認為這里的 philnash answer 已經過時了,即使它仍然有效。

現在,您應該必須使用 TwiML Redirect 節點調用第一個函數。

在第二個函數中,你應該必須添加一個重定向到流添加的 webhook? FlowEvent=return&foo=bar (其中foo=bar應該根據您真正想要返回的信息進行更改)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM