我正在尝试从 VBA 应用程序向我的电报机器人发送内联键盘。我使用的两个字符串导致 HTTP 错误 400 错误请求。
有谁知道如何建立以下两行来获得有效的内联电报机器人键盘?
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
结束功能
试试这个(strMarkup
周围没有引号(:
strMarkup = "{""inline_keyboard"":[[{""text"":""A"",""callback_data"":""A1""}," & _
"{""text"":""B"",""callback_data"":""C1""}]]}"
strPostData = "{""chat_id"": """ & strChatID & """, ""text"": """ & _
strMessage & """, ""reply_markup"": " & strMarkup & "}"