2017-09-12 1 views
0

J'essaie de recevoir un SMS de l'API twilio. J'ai généré un contrôleur de réponse distinct qui ne gère rien d'autre dans mes routes ou ressources. Il utilise une méthode post pour communiquer avec twilio. Im obtenir l'erreur:Rails - ArgumentError (nombre incorrect d'arguments (donné 1, attendu 0)):

"ArgumentError (wrong number of arguments (given 1, expected 0)):" 

replycontroller.rb

class ReplyController < ApplicationController 

    require 'twilio-ruby' 

    skip_before_action :verify_authenticity_token 

    def hart1 

    twiml = Twilio::TwiML::Response.new do |r| 
     r.Message 'The Robots are coming! Head for the hills!' 
    end 

    content_type 'text/xml' 
    twiml.text 
    end 

end 

voici mes itinéraires

Rails.application.routes.draw do 
    resources :posts 
    resources :phones 
    resources :users 
    root 'home#index' 

    post "/reply/hart1" => "reply#hart1" 

end 

Je suis sous l'impression que je suis routage ce mal. La console Heroku me donne également une erreur de 500, donc je sais que c'est quelque chose de réparable de mon côté.

+0

Je ne suis pas très sûr, mais selon les documents [THIS] (https://www.twilio.com/docs/quickstart/ruby/sms/hello-monkey), vous pouvez essayer 'r.message (body : "Les Robots arrivent! Dirigez-vous vers les collines!") ' – Abhi

+0

Aussi, je pense que' r.Message' devrait être 'r.message' (plus petit cas) [REF] (https://www.twilio.com/ docs/guides/comment-recevoir-et-répondre-en-ruby) – Abhi

+0

Quelle version de la bibliothèque Ruby utilisez-vous? – philnash

Répondre

1

Pour envoyer un message avec 'twillio-ruby votre code devrait ressembler à ceci

# put your own credentials here 
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy' 

# set up a client to talk to the Twilio REST API 
@client = Twilio::REST::Client.new account_sid, auth_token 

# Send SMS message 
@client.api.account.messages.create(
    from: '+FROMNUMBER', 
    to: '+TONUMBER', 
    body: 'The Robots are coming! Head for the hills!' 
) 

en vous contrôleur, il ressemblerait

require 'twilio-ruby' 
class ReplyController < ApplicationController 
    skip_before_action :verify_authenticity_token 

    def hart1 
    send_text_message 
    content_type 'text/xml' 
    end 

    private 

    def send_text_message 
    # put your own credentials here 
    account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy' 

    # set up a client to talk to the Twilio REST API 
    @client = Twilio::REST::Client.new account_sid, auth_token 

    # Send SMS message 
    @client.api.account.messages.create(
    from: '+FROMNUMBER', 
    to: '+TONUMBER', 
    body: 'The Robots are coming! Head for the hills!' 
    ) 
    end 
end 

La documentation pour 'twillo-ruby' est ici: https://github.com/twilio/twilio-ruby

+0

Il essaie de [répondre à un message entrant, que vous pouvez faire avec TwiML] (https://www.twilio.com/ docs/api/twiml/sms/twilio_request). – philnash

0

Je me suis retrouvé à suivre la route nzajt mentionnée où vous envoyez un texte régulier plutôt que la réponse mentionnée par Twilio. Le routage était bien. Tout a frappé la route de poste sur mon serveur à partir de twilio et j'ai été en mesure de prendre tous les paramètres que je voulais de sa charge utile pour l'utilisation. Merci les gars.