Ejemplo n.º 1
0
        public void AddRule(Rule rule)
        {
            if (rule is KeywordRule)
            {
                keyWordRuleDic.Add(rule.start, rule);
            }
            else
            {
                //if((rule as MultiLineRule)!=null){
                if (rule is MultiLineRule && !(rule is ScanRule))
                {
                    multiruleDic.Add(((MultiLineRule)rule).end, (MultiLineRule)rule);
                }

                if ((rule as KeywordRules) != null)
                {
                    KeywordRules ks    = rule as KeywordRules;
                    var          rules = ks.Rules();
                    foreach (var item in rules)
                    {
                        ruleDic.Add(item.start, item);
                    }
                }
                else
                {
                    ruleDic.Add(rule.start, rule);
                }


                foreach (var item in ruleDic.Values)
                {
                    if (!ruleFirstKeys.Contains(item.start[0]))
                    {
                        ruleFirstKeys += item.start[0];
                    }
                }
                //foreach (var item in ruleDic.Values) {
                foreach (var item in multiruleDic.Values)
                {
                    MultiLineRule mrule = item as MultiLineRule;
                    if (mrule != null)
                    {
                        if (!ruleEndKeys.Contains(mrule.end[0]))
                        {
                            ruleEndKeys += mrule.end[0];
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Keyword enables you to manage your interactive numbers keywords , create auto replies or set a webhook directly from your API.
        /// </summary>
        /// <param name="number">The Inbound number to create an inbound message rule for.</param>
        /// <param name="keyword">The received keyword in the inbound number </param>
        /// <param name="rule">The inbound message keyword rule , possible values are : Is, StartsWith, Contains, Any. Only "Is" is available for a shared number</param>
        /// <param name="senderId">Set any Sender ID for your response action</param>
        /// <param name="message">Set an auto reply to send back to the user (i.e: You have been successfully registered )</param>
        /// <param name="webhookUrl">Defines the source that you want to make the callback to, for example "www.google.com"</param>
        /// <param name="messageParameter">Set the parameters that the source takes ,for example https://www.google.com/search?msg=hello then your parameter that you have to set is msg</param>
        /// <param name="recipientParameter">Set the parameters that the source takes ,for example https://www.google.com/search?rec=966666666666 then your parameter that you have to set is rec</param>
        /// <param name="requestType">Defines the HTTP callback methods , it can be either "Post" or "Get"</param>
        /// <param name="resourceNumber">Your inbound number for example 70001</param>
        public virtual void MessagesKeyword(string number, string keyword, KeywordRules rule,
                                            string senderId           = null, string message = null, string webhookUrl = null, string messageParameter = null,
                                            string recipientParameter = null, RequestType?requestType = null, string resourceNumber = null)
        {
            Require.Argument("Number", number);
            Require.Argument("Keyword", keyword);
            Require.Argument("Rule", rule);

            var request = new RestRequest(Method.POST)
            {
                Resource = "Messages/Keyword"
            };

            request.AddParameter("Number", number);
            request.AddParameter("Keyword", keyword);
            request.AddParameter("Rule", rule);

            if (senderId.HasValue())
            {
                request.AddParameter("SenderID", senderId);
            }
            if (message.HasValue())
            {
                request.AddParameter("Message", message);
            }
            if (webhookUrl.HasValue())
            {
                request.AddParameter("WebhookURL", webhookUrl);
            }
            if (messageParameter.HasValue())
            {
                request.AddParameter("MessageParameter", messageParameter);
            }
            if (recipientParameter.HasValue())
            {
                request.AddParameter("RecipientParameter", recipientParameter);
            }
            if (requestType.HasValue)
            {
                request.AddParameter("RequestType", requestType.Value);
            }
            if (resourceNumber.HasValue())
            {
                request.AddParameter("ResourceNumber", resourceNumber);
            }

            Execute <bool>(request);
        }
Ejemplo n.º 3
0
        public void ShouldAddMessagesKeywordWithoutOptionalParameters()
        {
            IRestRequest savedRequest = null;

            _mockClient.Setup(orc => orc.Execute <bool>(It.IsAny <IRestRequest>()))
            .Callback <IRestRequest>(request => savedRequest = request)
            .Returns(new bool());
            var client = _mockClient.Object;

            string       number  = "123456789";
            string       keyword = "12";
            KeywordRules rule    = KeywordRules.Contains;

            client.MessagesKeyword(number: number, keyword: keyword, rule: rule);

            _mockClient.Verify(orc => orc.Execute <bool>(It.IsAny <IRestRequest>()), Times.Once);

            Assert.IsNotNull(savedRequest);
            Assert.AreEqual("Messages/Keyword", savedRequest.Resource);
            Assert.AreEqual(Method.POST, savedRequest.Method);
            Assert.AreEqual(3, savedRequest.Parameters.Count);

            var numberParam = savedRequest.Parameters.Find(x => x.Name == "Number");

            Assert.IsNotNull(numberParam);
            Assert.AreEqual(number, numberParam.Value);

            var keywordParam = savedRequest.Parameters.Find(x => x.Name == "Keyword");

            Assert.IsNotNull(keywordParam);
            Assert.AreEqual(keyword, keywordParam.Value);

            var ruleParam = savedRequest.Parameters.Find(x => x.Name == "Rule");

            Assert.IsNotNull(ruleParam);
            Assert.AreEqual(rule, ruleParam.Value);
        }
Ejemplo n.º 4
0
        public void ShouldAddMessagesKeywordWithOptionalParameters()
        {
            IRestRequest savedRequest = null;

            _mockClient.Setup(orc => orc.Execute <bool>(It.IsAny <IRestRequest>()))
            .Callback <IRestRequest>(request => savedRequest = request)
            .Returns(new bool());
            var client = _mockClient.Object;

            string       number             = "123456789";
            string       keyWord            = "12";
            KeywordRules rule               = KeywordRules.Contains;
            string       message            = ".Net Unit Test Message";
            string       webhookUrl         = "http://www.XYZ.com";
            string       messageParameter   = "msg";
            string       recipientParameter = "rec";
            RequestType  requestType        = RequestType.Post;
            string       resourceNumber     = "159753";

            client.MessagesKeyword(number: number, keyword: keyWord, rule: rule, senderId: SenderId, message: message, webhookUrl: webhookUrl,
                                   messageParameter: messageParameter, recipientParameter: recipientParameter, requestType: requestType, resourceNumber: resourceNumber);

            _mockClient.Verify(orc => orc.Execute <bool>(It.IsAny <IRestRequest>()), Times.Once);

            Assert.IsNotNull(savedRequest);
            Assert.AreEqual("Messages/Keyword", savedRequest.Resource);
            Assert.AreEqual(Method.POST, savedRequest.Method);
            Assert.AreEqual(10, savedRequest.Parameters.Count);

            var numberParam = savedRequest.Parameters.Find(x => x.Name == "Number");

            Assert.IsNotNull(numberParam);
            Assert.AreEqual(number, numberParam.Value);

            var keyWordParam = savedRequest.Parameters.Find(x => x.Name == "Keyword");

            Assert.IsNotNull(keyWordParam);
            Assert.AreEqual(keyWord, keyWordParam.Value);

            var ruleParam = savedRequest.Parameters.Find(x => x.Name == "Rule");

            Assert.IsNotNull(ruleParam);
            Assert.AreEqual(rule, ruleParam.Value);

            var senderIdParam = savedRequest.Parameters.Find(x => x.Name == "SenderID");

            Assert.IsNotNull(senderIdParam);
            Assert.AreEqual(SenderId, senderIdParam.Value);

            var messageParam = savedRequest.Parameters.Find(x => x.Name == "Message");

            Assert.IsNotNull(messageParam);
            Assert.AreEqual(message, messageParam.Value);

            var webhookUrlParam = savedRequest.Parameters.Find(x => x.Name == "WebhookURL");

            Assert.IsNotNull(webhookUrlParam);
            Assert.AreEqual(webhookUrl, webhookUrlParam.Value);

            var messageParameterParam = savedRequest.Parameters.Find(x => x.Name == "MessageParameter");

            Assert.IsNotNull(messageParameterParam);
            Assert.AreEqual(messageParameter, messageParameterParam.Value);

            var recipientParameterParam = savedRequest.Parameters.Find(x => x.Name == "RecipientParameter");

            Assert.IsNotNull(recipientParameterParam);
            Assert.AreEqual(recipientParameter, recipientParameterParam.Value);

            var requestTypeParam = savedRequest.Parameters.Find(x => x.Name == "RequestType");

            Assert.IsNotNull(requestTypeParam);
            Assert.AreEqual(requestType, requestTypeParam.Value);

            var resourceNumberParam = savedRequest.Parameters.Find(x => x.Name == "ResourceNumber");

            Assert.IsNotNull(resourceNumberParam);
            Assert.AreEqual(resourceNumber, resourceNumberParam.Value);
        }