Twitter: Error sending Direct message with quick reply buttons

这一生的挚爱 提交于 2019-12-14 04:03:31

问题


I need to send a Twitter DM with quick reply.

I use Tweetinvi, that at the moment does not support quick replies, therefore I tried to alter the query in Tweetinvi code at the lovest possible level: just before it is sent to Twitter.

If I send this (basic message)

https://api.twitter.com/1.1/direct_messages/new.json?text=hello&user_id=999999999

It works

When I send is this

https://api.twitter.com/1.1/direct_messages/new.json?text=MessageToUserId&user_id=999999999&quick_reply&type=options&options=[label=RedBird&description=Adescriptionabouttheredbird.&metadata=external_id_1]

I get status 401 Web request failed.

To build my request I tried to simplify this example:

https://developer.twitter.com/en/docs/direct-messages/quick-replies/api-reference/options

But I am missing something. I suppose it is a trivial mistake in the query. I tried several variations, but I cannot get a better result. Of course in my code I use a real userId, that here I masked with 9.

Can you suggest me a working correction to my query? (maybe with examples using multiple labels)

Update.

I tried to use TwitterAccessor (without hacks in Tweetinvi code) and improved the json

Here is my updated code

Auth.SetUserCredentials(consumerKey, consumerSecret, userAccessToken, userAccessSecret);
var authenticatedUser = User.GetAuthenticatedUser();
var qString = JsonConvert.DeserializeObject("{ 'event': { 'type': 'message_create', 'message_create': { 'target': { 'recipient_id': '123456789' }, 'sender_id': '987654321', 'message_data': { 'text': 'option?', 'quick_reply': { 'type': 'options', 'options': [ { 'label': 'option 1', 'metadata': 'val1', 'description': 'option 2' }, { 'label': 'val2', 'metadata': 'option 3', 'description': 'val3' } ] } } } } }");
var strEncoded = WebUtility.HtmlEncode(qString.ToString());
var url = "https://api.twitter.com/1.1/direct_messages/events/new.json";
var result = TwitterAccessor.TryExecutePOSTQuery($"{url}?{strEncoded}");

Now I have error 401, with this description: "Unauthorized - Authentication credentials were missing or incorrect."

Which is much better. Probably I just need to add credential headers using TwitterAccessor, but I need help about this.

I suppose that adding something TwitterAccessor. Method to create credentials headers before the post should do the job.

来源:https://stackoverflow.com/questions/47489322/twitter-error-sending-direct-message-with-quick-reply-buttons

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!