Это результат, который я хочу
func getOffers(_ page: Int, _ i: Int) {
getOfferProducts(category: [""], sort: -1, page: page) { (products) in
let keyboard = [ "inline_keyboard" : [
[
["text" : "Amazon", "url" : products[i].detailedPageURL]
]
]
]
var url = "https://api.telegram.org/bot" + apiToken + "/sendPhoto?" +
"chat_id=" + chatId +
"&caption=" + products[i].title + "\n\n" +
"?Prezzo iniziale: " + String(products[i].startingPrice) + " €\n" +
"?Prezzo attuale: " + String(products[i].price) + " €\n" +
"?Risparmi il " + String(Double(products[i].percentOff!)) + "%\n\n" +
"►" + String(products[i].detailedPageURL) +
"&photo=" + String(products[i].largeImageURL!) +
"&reply_markup=" + keyboard
DispatchQueue.main.async {
let url = URL(string: url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "")
let downloadTask = URLSession.shared.dataTask(with: url!) { (data : Data?, response : URLResponse?, error : Error?) in
// Do what you want with data
}
downloadTask.resume()
}
}
}
Если я не включу параметр "reply_markup", он будет работать (без кнопки, очевидно). Вместо этого, если я пытаюсь добавить кнопку, она возвращает ошибку:
{"ok": false, "error_code": 400, "description": "Bad Request: не удается разобрать ответную разметку клавиатурыJSON-объект "}