代码之家  ›  专栏  ›  技术社区  ›  Sergei Sirik

按未格式化电话号码搜索Microsoft Dynamics Rest API记录

  •  2
  • Sergei Sirik  · 技术社区  · 6 年前

    我正在尝试使用他们的rest api通过电话号码在dynamics crm中查找帐户记录。样本请求:

    https://<your_msd_domain>/api/data/v8.2/accounts?$select=accountid,name,telephone1&$filter=contains(telephone1, '4086671234')&$top=10
    

    在CRM记录中,如下所示:

    enter image description here

    如您所见,phone字段是这样格式化的 (408)-667-1234 ,而且,据我所知,它的格式没有限制。可能是这样的 (408) 667 1234 或者这个 408-667-1234 . 我无法控制此字段的格式。

    我在“快速查找”中添加了phone字段,在crm中我可以这样找到它 *4*0*8*6*6*7*1*2*3*4* ,例如: enter image description here

    但它对rest api不起作用,因此下面的请求(例如,我尝试了许多不同的过滤器)找不到任何东西:

    https://<your_msd_domain>/api/data/v8.2/accounts?$select=accountid,name,telephone1&$filter=contains(telephone1, '*4*0*8*6*6*7*1*2*3*4*')&$top=10
    

    所以,问题是: 有什么方法可以用dynamicsrmstapi找到“随机”格式的电话号码吗?

    P.S.这就是文档所说的搜索可能性: https://msdn.microsoft.com/en-us/library/gg334767.aspx#bkmk_applyqueryOptions

    1 回复  |  直到 6 年前
        1
  •  2
  •   Arun Vinoth-Precog Tech - MVP    6 年前

    你应该使用通配符 % %25

    %编码后4%0%8%6%6%7%1%2%3%4%转换为%254%250%258%256%256%257%251%252%253%254%25

    我用rest builder构建了这些url,您可以在浏览器地址栏本身进行测试。它起作用了。

    https://testorg.crm.dynamics.com/api/data/v8.2/accounts?$select=name,telephone1&$filter=contains(telephone1, '4%0%8%6%6%7%1%2%3%4')
    
    https://testorg.crm.dynamics.com/api/data/v8.2/accounts?$select=name,telephone1&$filter=contains(telephone1, '%254%250%258%256%256%257%251%252%253%254%25')