/// <summary> /// Sends a new direct message with options. /// </summary> /// <param name="recipientID">ID of user to send to.</param> /// <param name="text">Direct message contents.</param> /// <param name="options">List of options for the user to choose from.</param> /// <param name="cancelToken">Async cancellation token.</param> /// <returns>Direct message events data.</returns> public async Task <DirectMessageEvents> RequestQuickReplyOptionsAsync(ulong recipientID, string text, IEnumerable <QuickReplyOption> options, CancellationToken cancelToken = default(CancellationToken)) { var quickReply = new QuickReply { Type = "options", Options = options }; return(await NewDirectMessageEventAsync(recipientID, text, attachment : null, quickReply : quickReply)); }
/// <summary> /// Sends a new direct message to specified user. /// </summary> /// <param name="recipientID">ID of user to send to.</param> /// <param name="text">Direct message contents.</param> /// <param name="attachment">Optional attachment from overloads that support it.</param> /// <param name="quickReply">Quick reply from overloads that support it.</param> /// <param name="callToActions">List of Call to Action, which creates buttons in the message.</param> /// <param name="cancelToken">Async cancellation token.</param> /// <returns>Direct message events data.</returns> async Task <DirectMessageEvents> NewDirectMessageEventAsync(ulong recipientID, string text, Attachment attachment = null, QuickReply quickReply = null, IEnumerable <CallToAction> callToActions = null, CancellationToken cancelToken = default(CancellationToken)) { if (recipientID == default(ulong)) { throw new ArgumentException($"{nameof(recipientID)} must be set.", nameof(recipientID)); } if (string.IsNullOrWhiteSpace(text)) { throw new ArgumentException($"{nameof(text)} is a required parameter.", nameof(text)); } var newUrl = BaseUrl + "direct_messages/events/new.json"; var dmEventParams = new DirectMessageEventsValue { DMEvent = new DMEvent { MessageCreate = new DirectMessageCreate { MessageData = new DirectMessageData { Text = text, Attachment = attachment, QuickReply = quickReply, CallToActions = callToActions }, Target = new DirectMessageTarget { RecipientID = recipientID.ToString() } }, Type = "message_create" } }; RawResult = await TwitterExecutor.SendJsonToTwitterAsync( HttpMethod.Post.ToString(), newUrl, new Dictionary <string, string>(), dmEventParams, cancelToken) .ConfigureAwait(false); var reqProc = new DirectMessageEventsRequestProcessor <DirectMessageEvents>(); DirectMessageEvents dmEvents = reqProc.ProcessActionResult(RawResult, DirectMessageEventsType.Show); return(dmEvents); }