2

シンプルな電話番号を vxml ブロッ​​クに渡そうとしています。これに動的変数を渡すにはどうすればよいですか?

$my_phone_number_here = '12197719191';

$string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<menu dtmf="true">  
<prompt>
<audio src="http://my.site.com/app/service-interaction-center.mp3"/>
</prompt>
<choice dtmf="1" next="#sales"/>
</menu>
<form id="sales">
<block>
<audio src="http://my.site.com/app/service-interaction-center-thank-you.mp3"/>
</block>
<transfer name="MyCall" dest="tel:+{$my_phone_number_here}" bridge="true" connecttimeout="20s"/>
</form>
</vxml>
XML;

私はそれを使用して変換しようとしました:

$string = '';
$string .= $to_call;
$string .= '';
etc...

しかし、それもうまくいかなかったようです。{my_phone_number_here} に表示される単一の php 変数を取得したいのですが、これが正しく機能しない原因は何ですか?

編集:

表示されているコードは、電話番号が配置された状態でレンダリングされるようになりましたが、実際に通話が接続されることはありません。通話が発信されると、オーディオにリストされ、プロンプトを押すと、お礼のアナウンスが再生されますが、その後、一瞬だけ呼び出し音が鳴り、通話が切断されます。まだxmlを使用する必要があります。何かご意見は?

4

1 に答える 1

2

それをパーサー (特に DOMDocument) にロードし、そこから以下を使用して変更できます->setAttribute()

$transfer->item(0)->setAttribute('dest', $telephone_number);

簡単な例:

// use the parser
$dom = new DOMDocument;
$dom->loadXML($string);
$xpath = new DOMXpath($dom);

// setup those values
$number = 123131;
$telephone_number = 'tel:+' . $number;
// target that element
$transfer = $xpath->query('/vxml/form[@id="sales"]/transfer');
// set the value
$transfer->item(0)->setAttribute('dest', $telephone_number);
// show output
echo $dom->saveXML();

または、単純に変数を代入して内部に配置し、補間させます。

$my_phone_number_here = 123456879;
$string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
    <vxml version = "2.1">
        <menu dtmf="true">
            <prompt>
                <audio src="http://my.site.com/app/service-interaction-center.mp3"/>
            </prompt>
            <choice dtmf="1" next="#sales"/>
        </menu>
        <form id="sales">
            <block>
                <audio src="http://my.site.com/app/service-interaction-center-thank-you.mp3"/>
            </block>
            <transfer name="MyCall" dest="tel:+{$my_phone_number_here}" bridge="true" connecttimeout="20s"/>
        </form>
    </vxml>
XML;

echo $string;
于 2014-11-12T03:30:25.953 に答える