xml — динамически создайте vxml с php

Я пытаюсь передать простой номер телефона в блок 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...

Но это тоже не сработало. Я просто хотел бы получить одну переменную php для отображения в {my_phone_number_here}, что я пропускаю, что не позволит этому работать правильно?

РЕДАКТИРОВАТЬ:

Показанный код теперь отображается с указанным номером телефона, но мой вызов на самом деле никогда не подключается. Когда вызов сделан, вы попадаете в список к аудио и нажимаете подсказку, а затем воспроизводится объявление с благодарностью — но затем он звонит на долю секунды, и звонок сбрасывается. Все еще должно быть что-то с XML. Какие-нибудь мысли?

2

Решение

Вы можете загрузить его в Parser (в частности, 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;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]