Как вы называете внешний веб-API из плагина CRM? - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в разработке CRM.Я пытаюсь выяснить, как вызвать внешнюю конечную точку API из моей стадии создания после операции.Как я могу сделать это?

protected void ExecutePostOrderCreate(LocalPluginContext localContext)
{
    if (localContext == null)
    {
        throw new ArgumentNullException("localContext");
    }

    IPluginExecutionContext context = localContext.PluginExecutionContext;

    Entity postImageEntity = (context.PostEntityImages != null && context.PostEntityImages.Contains(this.postImageAlias)) ? context.PostEntityImages[this.postImageAlias] : null;

    if (postImageEntity != null)
    {
        ProcessOrderCaseType(postImageEntity, localContext);
    }
}

private void ProcessOrderCaseType(Entity order, LocalPluginContext localContext)
{

    int caseType = GetCaseType(order);

    Boolean caseTypeIsWorkersComp = caseType == (int)MLUtility.CaseTypes.WorkersComp;
    Boolean orderHasEamsCaseMaster = OrderHasCaseMaster(order);

    if (caseTypeIsWorkersComp && !orderHasEamsCaseMaster)
    {
        String caseNumber = GetCaseNumber(order);
        Boolean caseNumberIsValid = !String.IsNullOrEmpty(caseNumber);
        if (caseNumberIsValid)
        {
          **//call api**

        }
    }
}

1 Ответ

0 голосов
/ 07 июня 2018

Это то же самое, что вызывать API из любого другого места.Единственным дополнительным шагом будет объединение дополнительных dll, таких как Newtonsoft.Json, в основной dll плагина перед регистрацией в инструменте регистрации плагинов или gac на сервере.

Пример кода

var uri = new Uri("<external api url>"); 
 
                var request = WebRequest.Create(uri); 
                request.Method = WebRequestMethods.Http.Get; 
                request.ContentType = "application/json"; 
                try 
                { 
                    string helloWorldString = ""; 
                    using (var response = request.GetResponse()) 
                    { 
                        using (var reader = new StreamReader(response.GetResponseStream())) 
                        { 
                            string tmp = reader.ReadToEnd(); 
                            helloWorldString = JsonConvert.DeserializeObject<string>(tmp); 
                            Debug.Print("I read this string {0}: ", helloWorldString); 
                        } 
                    } 
 
                    var entity = (Entity) context.InputParameters["Target"]; 
                    if (entity.Contains("description")) 
                        entity.Attributes["description"] = helloWorldString; 
                    else 
                        entity.Attributes.Add("description", helloWorldString); 
 
                    //Update Sales Order Entity 
                    if (context.Depth == 1) 
                        service.Update(entity); 
 
                } 
                catch (Exception ex) 
                { 
                    throw; 
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...