2016-08-25 2 views
1

I Twilio der REST-API und Alamofire zu setzen bestimmte Attribute zu einem Kanal zu verwenden versucht ist, wenn es (https://www.twilio.com/docs/api/ip-messaging/rest/channels#action-create)(Swift) Twilio Post-Anforderung Attribute setzen mit alamofire

let parameters : [String : AnyObject] = [ 
    "FriendlyName": "foo", 
    "UniqueName": "bar", 
    "Attributes": [ 
     "foo": "bar", 
     "bar": "foo" 
    ], 
    "Type": "private" 
] 

Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels", parameters: parameters) 
    .authenticate(user: user, password: password) 
    .responseJSON { response in 
     let response = String(response.result.value) 
     print(response) 
} 

Mit diesem Code erstellen, die Antwort Ich erhielt zurück war, dass ein Kanal mit FriendlyName foo und UniqueName bar erstellt wurde, aber dieser Kanal hatte keine Attribute festgelegt.

Blick auf die Alamofire Github (https://github.com/Alamofire/Alamofire) Ich sehe, dass es eine Möglichkeit gibt, eine POST-Anfrage mit JSON-codierten Parametern zu senden. Also habe ich versucht, dies:

let parameters : [String : AnyObject] = [ 
    "FriendlyName": "foo", 
    "UniqueName": "bar15", 
    "Attributes": [ 
     "foo": "bar", 
     "bar": "foo" 
    ], 
    "Type": "private" 
] 

Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels", parameters: parameters, encoding: .JSON) 
    .authenticate(user: user, password: password) 
    .responseJSON { response in 
     let response = String(response.result.value) 
     print(response) 
} 

Beim Hinzufügen „encoding: JSON“ auf die Anfrage die Antwort zeigt, dass nicht nur wurden die Attribute nicht gesetzt, sondern auch die Friendly und Unique waren gleich Null, im Gegensatz zu früher, als sie richtig eingestellt wurden Verwenden der URL-codierten Parameter.

Setzte ich die Attribute falsch in 'Parameter'? Twilios Dokumentation sagt, dass Attribute "ein optionales Metadatenfeld ist, das Sie verwenden können, um beliebige Daten zu speichern. In diesem Feld wird keine Verarbeitung oder Validierung durchgeführt."

Hilfe würde geschätzt :)

Antwort

1

Ich habe eine Antwort auf meine Frage herausgefunden. Es stellte sich heraus, dass ich das Feld Attribute falsch formatiert hatte.

Hier ist der Code, der für mich gearbeitet:

let parameters : [String : AnyObject] = [ 
    "FriendlyName": "foo", 
    "UniqueName": "bar", 
    "Attributes": "{\"key\":\"value\",\"foo\":\"bar\"}", 
    "Type": "private" 
] 

Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels/", parameters: parameters) 
    .authenticate(user: user, password: password) 
    .responseJSON { response in 
     let response = String(response.result.value) 
     print(response) 
     debugPrint(response) 
} 

hoffe, das hilft anderen :)