예제 #1
0
 private void VerifyResultCoreProperties(InfobipViberIncomingResult result, Activity activity)
 {
     Assert.Equal(result.MessageId, activity.Id);
     Assert.Equal(result.From, activity.From.Id);
     Assert.Equal(result.To, activity.Recipient.Id);
     Assert.Equal(result.From, activity.Conversation.Id);
     Assert.Equal(result, activity.ChannelData);
     Assert.Equal(result.ReceivedAt, activity.Timestamp);
 }
        public static Activity Convert(InfobipViberIncomingResult result, string viberSender)
        {
            var activity = CreateBaseDeliveryReportActivity(result);

            activity.ChannelId = InfobipViberConstants.ChannelName;
            activity.From      = new ChannelAccount {
                Id = viberSender
            };
            return(activity);
        }
        private static void HandleCallbackData(InfobipViberIncomingResult response, Activity activity)
        {
            if (string.IsNullOrWhiteSpace(response.CallbackData))
            {
                return;
            }
            var serialized = JsonConvert.DeserializeObject <Dictionary <string, string> >(response.CallbackData);

            activity.AddInfobipCallbackData(serialized);
        }
        public static Activity Convert(InfobipViberIncomingResult result)
        {
            var activity = ConvertToMessage(result);

            activity.ChannelId  = InfobipViberConstants.ChannelName;
            activity.Text       = result.Message.Text;
            activity.TextFormat = TextFormatTypes.Plain;

            return(activity);
        }
        private Activity ConvertToActivity(InfobipViberIncomingResult response)
        {
            if (response.Error != null)
            {
                //error codes - https://dev-old.infobip.com/getting-started/response-status-and-error-codes
                if (response.Error.Id > 0)
                {
                    throw new Exception($"{response.Error.Name} {response.Error.Description}");
                }
            }

            if (response.IsDeliveryReport())
            {
                _logger.Log(LogLevel.Debug, $"Received DLR notification: MessageId={response.MessageId}, " +
                            $"DoneAt={response.DoneAt}, SentAt={response.SentAt}, Channel={response.Channel}");

                var activity = InfobipViberDeliveryReportToActivity.Convert(response, _viberAdapterOptions.InfobipViberSender);
                if (string.IsNullOrEmpty(activity.ChannelId))
                {
                    _logger.Log(LogLevel.Error, $"{response.Channel} is not supported channel");
                }
                HandleCallbackData(response, activity);

                return(activity);
            }

            if (response.IsViberMessage())
            {
                _logger.Log(LogLevel.Debug, $"MO message received: MessageId={response.MessageId}, " +
                            $"IntegrationType={response.IntegrationType}, " +
                            $"receivedAt={response.ReceivedAt}");

                var activity = InfobipViberToActivity.Convert(response);
                if (activity == null)
                {
                    _logger.Log(LogLevel.Information, $"Received MO message: {response.MessageId} has unsupported message type");
                    return(null);
                }

                HandleCallbackData(response, activity);

                return(activity);
            }

            throw new Exception("Unsupported message received - not DLR, SEEN or MO message: \n" +
                                JsonConvert.SerializeObject(response, Formatting.Indented));
        }