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]; } } } } }
/// <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); }
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); }
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); }