Создание новой функции в вашем литерале объекта и вызов конструктора кажется радикальным отходом от исходной проблемы, и это не нужно.
Вы не можете ссылаться на свойство sibling во время инициализации литерала объекта.
var x = { a: 1, b: 2, c: a + b } // not defined
var y = { a: 1, b: 2, c: y.a + y.b } // not defined
Простейшее решение для вычисляемых свойств (без кучи, без функций, без конструктора):
var x = { a: 1, b: 2 };
x.c = x.a + x.b; // apply computed property
Я действительно находился в такой же ситуации, как и вы, и лучший совет, который я могу вам дать, это перенести всю бизнес-логику, которую вы можете, на другую систему / процесс, всю тяжелую работу следует выполнять за пределами Dynamics 365.
Вот как я решил проблему:
Создал пользовательскую сущность SMS-сообщение , как вы сделали это в динамике, со всей информацией, необходимой для отправки текстового сообщения. (номер телефона, сообщение, статус и т. д.).
Реализован плагин Async Post Create, который будет отправлять всю эту информацию в очередь Azure Service Bus. Асинхронность здесь действительно важна, так что динамика блокируется как можно меньше. Этот плагин должен быть максимально легким и не иметь никакой бизнес-логики.
Создана функция Azure, которая запускается при получении нового сообщения в очереди. Эта функция Azure выполняла всю бизнес-логику, которая мне была нужна, в основном это была интеграция с SMS-шлюзом. В вашем случае он может вызвать сторонний API для сокращения URL-адреса, интеграции с внешней базой данных и т. Д. Наконец, обновите запись SMS-сообщения с помощью сокращенного URL-адреса и другой необходимой вам информации.
Еще несколько заметок