Twitter: Ошибка отправки прямого сообщения с помощью кнопок быстрого ответа
Мне нужно отправить DM DM с быстрым ответом.
Я использую Tweetinvi, который на данный момент не поддерживает быстрые ответы, поэтому я попытался изменить запрос в коде Tweetinvi на максимально возможном уровне: непосредственно перед отправкой в Twitter.
Если я отправлю это (основное сообщение)
https://api.twitter.com/1.1/direct_messages/new.json?text=hello&user_id=999999999
Оно работает
Когда я отправляю это
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]
Я получил статус 401 Веб-запрос не удался.
Чтобы построить мой запрос, я попытался упростить этот пример:
https://developer.twitter.com/en/docs/direct-messages/quick-replies/api-reference/options
Но я что-то упустил. Я полагаю, это тривиальная ошибка в запросе. Я попробовал несколько вариантов, но я не могу получить лучший результат. Конечно, в моем коде я использую настоящий userId, который здесь я замаскировал с помощью 9.
Можете ли вы предложить мне исправление моего запроса? (возможно с примерами, использующими несколько меток)
Обновить.
Я попытался использовать TwitterAccessor (без хаков в коде Tweetinvi) и улучшил JSON
Вот мой обновленный код
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}");
Теперь у меня есть ошибка 401, с этим описанием: "Несанкционированный - учетные данные аутентификации отсутствовали или неверны".
Который намного лучше. Возможно, мне просто нужно добавить заголовки учетных данных, используя TwitterAccessor, но мне нужна помощь по этому поводу.
Я полагаю, что добавление чего-то TwitterAccessor. Метод создания заголовков учетных данных до того, как публикация выполнит свою работу.