예제 #1
0
 public FirstTextMessageReceiver(ISender sender, IStateManager stateManager, IBucketExtension bucketExtension, IDirectoryExtension directoryExtension)
 {
     _sender             = sender;
     _stateManager       = stateManager;
     _bucketExtension    = bucketExtension;
     _directoryExtension = directoryExtension;
 }
예제 #2
0
 public GreetingsMessageReceiver(ISender sender, IContactExtension contactExtension, IDirectoryExtension directoryExtension, Settings settings)
 {
     _sender             = sender;
     _settings           = settings;
     _contactExtension   = contactExtension;
     _directoryExtension = directoryExtension;
 }
 public BuilderMessageReceiver(
     IFlowManager flowManager,
     BuilderSettings settings,
     IContactExtension contactExtension,
     IDirectoryExtension directoryExtension,
     ISender sender,
     IStateManager stateManager,
     IDocumentSerializer documentSerializer,
     IEnvelopeSerializer envelopeSerializer,
     IArtificialIntelligenceExtension artificialIntelligenceExtension,
     IContextProvider contextProvider,
     IUserOwnerResolver userOwnerResolver,
     ILogger logger)
     : base(contactExtension, directoryExtension, logger)
 {
     _flowManager        = flowManager;
     _settings           = settings;
     _sender             = sender;
     _stateManager       = stateManager;
     _documentSerializer = documentSerializer;
     _envelopeSerializer = envelopeSerializer;
     _contextProvider    = contextProvider;
     _userOwnerResolver  = userOwnerResolver;
     _artificialIntelligenceExtension = artificialIntelligenceExtension;
 }
 public PlainTextMessageReceiver(IMessagingHubSender sender, IDirectoryExtension directory, Settings settings, IBucketExtension bucket, ISchedulerExtension scheduler, IBroadcastExtension broadcaster)
 {
     _settings    = settings;
     _scheduler   = scheduler;
     _bucket      = bucket;
     _directory   = directory;
     _broadcaster = broadcaster;
     _sender      = sender;
 }
        public static async Task <Contact> GetFromContactsOrDirectoryAsync(
            this IContactExtension contactExtension,
            IDirectoryExtension directoryExtension,
            Identity identity,
            CancellationToken cancellationToken)
        {
            if (contactExtension == null)
            {
                throw new ArgumentNullException(nameof(contactExtension));
            }
            if (directoryExtension == null)
            {
                throw new ArgumentNullException(nameof(directoryExtension));
            }
            if (identity == null)
            {
                throw new ArgumentNullException(nameof(identity));
            }

            Contact contact = null;

            try
            {
                // try from the roster.
                contact = await contactExtension.GetAsync(identity, cancellationToken);
            }
            catch (LimeException ex) when(
                ex.Reason.Code == ReasonCodes.COMMAND_RESOURCE_NOT_FOUND ||
                ex.Reason.Code == ReasonCodes.COMMAND_RESOURCE_NOT_SUPPORTED)
            {
            }

            if (contact == null)
            {
                // Try from the directory.
                var account = await directoryExtension.GetDirectoryAccountAsync(identity, cancellationToken);

                if (account == null) // Should never occur because the extension should throw the exception itself
                {
                    throw new LimeException(ReasonCodes.COMMAND_RESOURCE_NOT_FOUND, "The account was not found in the directory");
                }

                contact = new Contact
                {
                    Identity = identity, Name = account.FullName
                };

                foreach (var property in typeof(ContactDocument).GetProperties(BindingFlags.Public | BindingFlags.Instance))
                {
                    var accountValue = property.GetValue(account);
                    property.SetValue(contact, accountValue);
                }
            }

            return(contact);
        }
 public BuilderMessageReceiver(
     IContactExtension contactExtension,
     IDirectoryExtension directoryExtension,
     IFlowManager flowManager,
     BuilderSettings settings)
     : base(contactExtension, directoryExtension)
 {
     _flowManager = flowManager;
     _settings    = settings;
 }
 public PlainTextMessageReceiver(IMessagingHubSender sender, IContactExtension contacts, ISchedulerExtension scheduler, IDirectoryExtension directory, IBucketExtension bucket)
 {
     _sender = sender;
     //_contacts = contacts;
     _scheduler = scheduler;
     _directory = directory;
     _bucket    = bucket;
     SState     = "initialState";
     Medicine   = string.Empty;
 }
 public TestContactMessageReceiver(
     IContactExtension contactExtension,
     IDirectoryExtension directoryExtension,
     bool cacheLocally        = true,
     TimeSpan cacheExpiration = default) : base(contactExtension,
                                                directoryExtension,
                                                cacheLocally,
                                                cacheExpiration)
 {
     ReceivedItems = new List <(Message, Contact)>();
 }
예제 #9
0
 /// <summary>
 /// Initializes a new instance of <see cref="ContactMessageReceiverBase"/> class.
 /// </summary>
 /// <param name="contactExtension"></param>
 /// <param name="directoryExtension"></param>
 /// <param name="cacheLocally">Indicates if the contact information should be cached locally.</param>
 /// <param name="cacheExpiration">Defines the local cache expiration, if configured.</param>
 protected ContactMessageReceiverBase(
     IContactExtension contactExtension,
     IDirectoryExtension directoryExtension,
     bool cacheLocally        = true,
     TimeSpan cacheExpiration = default(TimeSpan))
 {
     _directoryExtension = directoryExtension;
     _contactExtension   = contactExtension;
     _cacheLocally       = cacheLocally;
     _contactCache       = new MemoryCache(nameof(ContactMessageReceiverBase));
     _cacheExpiration    = cacheExpiration == default(TimeSpan) ? TimeSpan.FromMinutes(30) : cacheExpiration;
 }
 /// <summary>
 /// Initializes a new instance of <see cref="ContactMessageReceiverBase"/> class.
 /// </summary>
 /// <param name="contactExtension"></param>
 /// <param name="directoryExtension"></param>
 /// <param name="cacheLocally">Indicates if the contact information should be cached locally.</param>
 /// <param name="cacheExpiration">Defines the local cache expiration, if configured.</param>
 protected ContactMessageReceiverBase(
     IContactExtension contactExtension,
     IDirectoryExtension directoryExtension,
     ILogger logger,
     bool cacheLocally        = true,
     TimeSpan cacheExpiration = default)
 {
     _directoryExtension = directoryExtension;
     _contactExtension   = contactExtension;
     _cacheLocally       = cacheLocally;
     _logger             = logger;
     _cacheExpiration    = cacheExpiration == default ? TimeSpan.FromMinutes(30) : cacheExpiration;
     ContactCache        = new MemoryCache(new MemoryCacheOptions());
 }