【发布时间】:2019-10-11 01:31:38
【问题描述】:
This is the result that I want
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":"错误请求:无法解析回复键盘标记 JSON 对象"}
【问题讨论】:
-
这可能是由于 url 标题中的表情符号 (????, ????, ????, ►)。您是否尝试过在没有他们的情况下发送请求?
-
问题与“reply_markup”有关,因为没有它,它可以工作。
标签: swift telegram telegram-bot