0

アウトバウンド コールで録音済みメッセージが再生される前に、音声メッセージを追加するオプションを追加しようとしています。私が見つけることができたこのタイプの最も近い質問はこれでし

私は現在、あなたが電話したい番号とあなたがしたいメッセージのためのフィールドを入力するフォームを持っています.

<form action="calls" method="post">
    <input type="text" name="number" placeholder="number e.g. 2124095555" />
    <input type="text" name="message" placeholder="add a message" />
    <input type="submit" value="Roll em!">
</form>

私の呼び出しのコントローラーには次のものがあります。

 def create

    data = {
      :from => CALLER_ID,
      :to => params['number'],
      :say => params['message'],
      :url => 'http://howenstine.co/rick_roll.mp3',
      :if_machine => 'Continue'
    }

    begin
      client = Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN)
      client.account.calls.create(data)
    rescue StandardError => bang
      redirect_to :action => '.', 'msg' => "Error #{bang}"
      return
    end
    redirect_to root_path
  end

明らかに :say パラメータが機能していません。着信通話にはこのようなものがありますが、発信通話にはうまくいかないと思います

 def voice
    response = Twilio::TwiML::Response.new do |r|
      r.Say 'fooo bar', :voice => 'alice'
         r.Play 'http://linode.rabasa.com/cantina.mp3'
    end

    render_twiml response
  end

ヘルプやガイダンスをいただければ幸いです。

4

1 に答える 1

2

Twilio 開発者エバンジェリストはこちら。

REST API を介して呼び出しを作成する場合、from、 、toおよびいずれかurlまたはapplications_sidパラメーターを送信する必要があります。また、送信できる などのオプションのパラメーターが多数ありますif_machine。完全なリストは、REST API ドキュメント で入手できます

sayただし、発見したように、パラメーターを送信することはできません。探している結果を得るには、音声エンドポイント URL を使用してメッセージを読み、ファイルを再生する必要があります。

すでに音声エンドポイントがあるため、通話時に何をすべきかを決定する必要もあります。

したがって、createアクションを次のように変更すると、メッセージが音声 URL に渡されます。

def create
  data = {
    :from => CALLER_ID,
    :to => params['number'],
    :url => voice_url(:message => params['message']),
    :if_machine => 'Continue'
  }

  begin
    client = Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN)
    client.account.calls.create(data)
  rescue StandardError => bang
    redirect_to :action => '.', 'msg' => "Error #{bang}"
    return
  end
  redirect_to root_path
end

次に、音声エンドポイントでメッセージを確認して返し、その後に再生したいファイルを返します。それ以外の場合は、既に持っているものを返します。

def voice
  if params['message'].present?
    # if we have a message, say it followed by the rick roll
    response = Twilio::TwiML::Response.new do |r|
      r.Say params['message'], :voice => 'alice'
      r.Play 'http://howenstine.co/rick_roll.mp3'
    end
  else
    # otherwise return the original response
    response = Twilio::TwiML::Response.new do |r|
      r.Say 'fooo bar', :voice => 'alice'
      r.Play 'http://linode.rabasa.com/cantina.mp3'
    end
  end

  render_twiml response
end

それがまったく役立つかどうか教えてください。

于 2014-07-28T10:21:31.377 に答える