2013-10-24 4 views
2

Я пытаюсь написать скрипт Twilio для передачи голоса без рельсов - я хотел бы иметь возможность запускать скрипт прямо с моего терминала.Использование Twilio/XML без Rails

У меня есть очень простой сценарий, прямо из twilio-rb драгоценных документов:

# This should be in an initializer or similar 
Twilio::Config.setup \ 
    :account_sid => account, 
    :auth_token => token 

    Twilio::Call.create :to => '+1234567890', :from => '+0987654321', 
        :url => xml_file 

xml_file является XML-файл на моей локальной машине, но он выдает эту ошибку:

Error #21205: Url is not a valid url

Как я могу написать вышеприведенный скрипт для работы с локальным xml-файлом? Конечная цель состоит в том, чтобы сделать телефонный звонок, воспроизвести звуковое сообщение, набрать кнопку и выполнить действие на основе полученного номера. XML-файл Twiml должен сделать это для меня, если я могу заставить его работать.

EDIT:

При использовании ссылки раздаточной акций, я получаю эту ошибку в пределах интерфейса Twilio:

'Twilio is unable to process the Content-Type of the provided URL. Please see the Twilio Markup XML Documentation for more information on valid Content-Types. 

You must return a Content-Type for all requests. Requests without a Content-Type will appear in the Debugger as a 502 Bad Gateway error. 

Having a phone number, outgoing call request or action attribute refer to a non XML or audio resource. 
Having a Play verb attempt to play non-audio content, such as XML or text. 
Verify that that your web server is returning a Content-Type and it is the expected value 
Make sure the URL noted refers to a valid resource' 

Чтобы убедиться, я скопировал пример я знаю, буду работать в мой файл XML:

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Say voice="man">Hey man! Listen to this!</Say> 
    <Play>http://foo.com/cowbell.mp3</Play> 
    <Say voice="man">What did you think of that?!</Say> 
    <Record action="http://foo.com/handleRecording.php" method="GET" maxLength="20" finishOnKey="*"/> 
    <Gather action="/process_gather.php" method="GET"> 
    <Say>Now hit some buttons!</Say> 
    </Gather> 
    <Say voice="man">Awesome! Thanks!</Say> 
    <Hangup/> 
</Response> 

ответ

0

Две идеи попробовать:

(1) Если файл считывается локально и отправляется на сервер Twilio, попытайтесь:

:url => 'file:///path/file.xml' 

где

  • host в //host/ опущен, что дает три косой черты подряд.
  • path - полный путь файловой системы к вашему XML-файлу.
  • file.xml - это имя вашего XML-файла.

(2) Если файл должен быть читаемым сервером Twilio, попытайтесь поместить его в облаке где-то (например, Dropbox) и с помощью открытого URL в ней.

+0

Хмм, нет кубиков. Формат имеет смысл. Это то, что я получаю в результате: ': url => 'файл: /// Пользователи/Luigi/Desktop/work/Dropbox/Twilio/xml.xml'' Но у меня по-прежнему такая же ошибка. – Luigi

+0

Если URL-адрес должен быть общедоступным, возможно, URL-адрес, предоставленный Dropbox-> Share Link, стоит попробовать. – kjhughes

+0

Хорошее мышление, я думаю, что это шаг вперед - он фактически делает вызов по назначению, но XML не читается - он просто записывает запись ошибок приложения, а не играет так, как должен. Я знаю, что xml действителен, поскольку я использовал один и тот же xml через twilio's «twimlets», и он отлично работает. – Luigi

Смежные вопросы