2016-08-25 2 views
1

Я пытаюсь использовать Twilio отдохнем Апи и Alamofire установить определенные атрибуты к каналу при его создании (https://www.twilio.com/docs/api/ip-messaging/rest/channels#action-create)(Swift) Twilio сообщение запроса для установки атрибутов с помощью 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) 
} 

Используя этот код, ответ Я получил обратно, что канал был создан с помощью панели FriendlyName foo и UniqueName, но у этого канала не было набора атрибутов.

Глядя на Alamofire github (https://github.com/Alamofire/Alamofire) Я вижу, что есть способ отправить запрос POST с JSON-кодированными параметрами. Так что я попытался это:

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) 
} 

При добавлении «кодирования: .JSON» на запрос ответ показывает, что не только были атрибуты не установлены, но также FriendlyName и UniqueName были нулевыми, в отличие от ранее, когда они были правильно установлены используя URL-кодированные параметры.

Я устанавливаю Атрибуты неправильно в «параметрах»? Документация Twilio гласит, что атрибуты - это «Дополнительное поле метаданных, которое вы можете использовать для хранения любых данных, которые вы хотите. В этом поле не выполняется обработка или проверка».

Помощь будет оценена :)

ответ

1

я понял, ответ на мой вопрос. Оказывается, я неправильно форматировал поле Атрибуты.

Вот код, который работал на меня:

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) 
} 

Надеется, что это помогает другим :)

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