我正在尝试从VBA应用程序向我的Telegram机器人发送内联键盘。我正在使用的两个字符串导致HTTP错误400 Bad Request。
有谁知道如何构建以下两行来获得一个工作的内联Telegram Bot键盘?
Public Function SendTelegramMessage(strChatID As String, strMessage As String)
Dim objHTTP As Object
Dim strPostData As String
Dim strMarkup As String
strMarkup = "{""inline_keyboard"":[[{""text"":""A"",""callback_data"":""A1""},{""text"":""B"",""callback_data"":""C1""}]]}"
strPostData = "{""chat_id"": """ & strChatID & """, ""text"": """ & strMessage & """, ""reply_markup"": """ & strMarkup & """}"
Set objHTTP = CreateObject("winhttp.winhttprequest.5.1")
On Error Resume Next
objHTTP.Open "POST", gsTelegramAPIURL & gsTelegramAPIKey & "/sendMessage?", False
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.Send (strPostData)
If Err.Number = 0 Then
If objHTTP.Status = "200" Then
Debug.Print "HTTP POST request was succesfull"
ElseIf objHTTP.Status = "502" Then
Debug.Print "HTTP status: " & objHTTP.Status & ". HTTP statustext: " & objHTTP.StatusText
Set objHTTP = Nothing
Exit Function
ElseIf objHTTP.Status = "400" Then
Debug.Print "HTTP status: " & objHTTP.Status & ". HTTP statustext: " & objHTTP.StatusText
Set objHTTP = Nothing
Exit Function
Else
Debug.Print "HTTP status: " & objHTTP.Status & ". HTTP statustext: " & objHTTP.StatusText
End If
Else
'Unknown error, probably no internet connection.
Debug.Print "Error Number: " & Err.Number & " Error Source: " & Err.Source & " Error Description: " & Err.description
End If
Set objHTTP = Nothing
结束功能
答案 0 :(得分:0)
试试这个(strMarkup
周围没有引号):
strMarkup = "{""inline_keyboard"":[[{""text"":""A"",""callback_data"":""A1""}," & _
"{""text"":""B"",""callback_data"":""C1""}]]}"
strPostData = "{""chat_id"": """ & strChatID & """, ""text"": """ & _
strMessage & """, ""reply_markup"": " & strMarkup & "}"