示例#1
0
        public async Task <Schema.ResourceResponse> SendActivityAsync(Schema.Activity activity, List <AttachmentStream> attachmentStreams = null)
        {
            SentActivities.Add(activity);

            var requestPath = $"/v3/conversations/{activity.Conversation?.Id}/activities/{activity.Id}";
            var request     = StreamingRequest.CreatePost(requestPath);

            request.SetBody(activity);
            attachmentStreams?.ForEach(a =>
            {
                var streamContent = new StreamContent(a.ContentStream);
                streamContent.Headers.TryAddWithoutValidation(HeaderNames.ContentType, a.ContentType);
                request.AddStream(streamContent);
            });

            var serverResponse = await _adapter.ProcessStreamingActivityAsync(activity, OnTurnAsync, CancellationToken.None).ConfigureAwait(false);

            if (serverResponse.Status == (int)HttpStatusCode.OK)
            {
                return(JsonConvert.DeserializeObject <Schema.ResourceResponse>(serverResponse.Body.ToString()));
            }

            throw new Exception("SendActivityAsync failed");
        }