سلام و احترام
ما یک سری فرم شخصی سازی شده در داخل پیام گسترمون ایجاد کردیم.
حالا میخوایم این فرم ها هر کدامشون بر حسب نیاز کاربر از طریق وب سرویس فعال بشن ...
راهنمایی میفرمایید در این خصوص که چه کاری رو باید انجام بدیم ؟
سلام
هر فرم کلید مخصوص خودشو داره
شما کافیه موقع فرآخوانی سرویس بر حسب نیازتون کلید فرم مورد نظرتون را پاس بدید
IForm.SaveForm<SaveForm>
<MethodParameters>
<userName isNull="false" />
<password isNull="false" />
<formInfo>
<Description>توضیحات این فرم</Description>
<IdentityId>156b95d3-1ab5-411c-a13c-068ffd8f491c</IdentityId>
<Subject>تست فرم از وب سرویس</Subject>
<CreatDate>11/14/2021 5:07:36 PM</CreatDate>
<CrmId>bc95d150-88f8-4601-ad8e-21815eb46fa5</CrmId>
<CrmObjectTypeCode>form8</CrmObjectTypeCode>
<CrmObjectTypeId>b5fa6b7b-cd5f-4d61-852a-ef4bf1c3516e</CrmObjectTypeId>
<CrmObjectTypeIndex>0</CrmObjectTypeIndex>
<CrmObjectTypeName isNull="false" />
<ExtendedProperties attr0="BaseCrmObjectExtendedPropertyInfoArray" isNull="false">
<BaseCrmObjectExtendedPropertyInfoArray0>
<Name isNull="false" />
<UserKey>number1</UserKey>
<Value>10</Value>
</BaseCrmObjectExtendedPropertyInfoArray0>
</ExtendedProperties>
<ModifyDate>11/14/2021 5:07:36 PM</ModifyDate>
<ParentCrmObjectId>ff06bdcf-564b-4a91-9a14-6e6f8de3c446</ParentCrmObjectId>
<ProcessStateIndex>0</ProcessStateIndex>
<RefId isNull="false" />
<Stage isNull="false" />
<StageId>7de6ad74-efe8-426c-8ba7-814b1365d7e0</StageId>
<Tags attr0="StringArray" isNull="false">
<StringArray0 isNull="false" />
</Tags>
</formInfo>
</MethodParameters>
</SaveForm>
در ابتدا بی نهایت سپاسگزاریم از تکه کد ارسالی شما
با توجه به کد ارسالی شما و ارسال ان برای تیم برنامه نویسی خودمان،
یک ویدیو به پیوست تقدیم میگردد
به این دلیل که جز این تالار گفتمان راه ارتباطی دیگری با شما نداریم
خواهشمندیم به ابهاماتی که در این ویدئو برای تیم برنامه نویسی ما وجود دارد و به آنها اشاره شده است پایان ببخشید .
سلام خواهش میشه
کد رو از تو ویدئو نمیشه برسی کرد
شما لطفا از تیم برنامه نویسی خودتون بخواهید مشکلشون رو اینجا بنویسیند و یا حتی اگر در بخشی از کد خطا دریافت میکنند کد خودشون رو اینجا ارسال کنند تا برسی کنم و نتیجه رو در اسرع وقت به اطلاعتون برسونم
سلام
هر فرم کلید مخصوص خودشو داره
شما کافیه موقع فرآخوانی سرویس بر حسب نیازتون کلید فرم مورد نظرتون را پاس بدید
لطفا در این مورد یک Sample ارسال کنی - ممنون
این سمپل برای متد findpersonbyid هستش
درصورتی که مورد استفاده ی ما وب سرویس فرم و متد saveform هست
که وب سرویس مورد نظر ما مثلا برای متد saveform کلاس های خیلی خیلی بیشتری داره و داخل سمپل هیچ اشاره ای به انها نشده ...
و این forminfo دارای کلاس های زیادی هستش که حتی من زمانی که با پشتیبانی تماس گرفتم به من گفتن در این خصوص باید اینجا و از شما بخوام
ما در حال حاضر اسمپل کدی برای فرم نداریم چون داکیومنت ها خیلی دقیق هستند با توجه به داکیومنت و سمپل نوشته شده برای سرویس هویت به راحتی میتوانید وب سرویس مورد نظر خود را پیاده سازی کنید
ما برای زبان های برنامه نویسی پرکاربر یک نمونه سمپل کد ایجاد کردیم
لطفا راهنمایی کنید که برای استفاده از وب سرویس فرم چطوری باید پارامترها رو تکمیل کنیم
ما چهار تا فرم داریم با شناسه های مختلف.
برای مثال اگر بخواهیم با استفاده از وب سرویس فرم عضویت یک شخص جدید را به عضویت سایت در بیاوریم باید چگونه پارامتر ها را تکمیل کنیم
شناسه فرم عضویت: Dffa715b-d593-4cdf-ba7e-7cdbdade805a
با تشکر
شما دقیقا با خواندن
https://developer.payamgostar.com/wp-content/uploads/2021/04/Form.pdf
داکیومنت
به هر زبان برنامه نویسی که قابلیت فرآخوانی وب سرویس داشته باشد میتوانید فیلد ها را مقدار دهی کنید در داکیومنت بطور دقیق گفته شده هرکدام از پارمتر ها چه نوع ورودی میگیره و برای چه کاربردی مورد استفاده قرار میگیره
و در قسمت crmobjecttypecode شما کلیدی که در بخش ui نرم افزار بخش شخصی سازی سی ار ام برای اون فرم وارد کرده اید را وارد میکنید تا فرم از اون نوع ساخته بشه
داکیومنت ها مشاهده شده و لازم است حداقل یک سمپل از نحوه فراخوانی متد saveform برای ما ارسال کنید
با تشکر
namespace PayamGostarConsoleWcfSamples
{
using PgForm;
using System;
internal interface IFormServices
{
FormInfoResult FindFormById(Guid formId);
SaveCrmObjectResult Save(FormInfo form info);
}
}
---------------
namespace PayamGostarConsoleWcfSamples
{
using PgForm;
using System;
internal class FormServices : IFormServices
{
private readonly FormClient _formClient;
public FormServices() : this(new FormClient())
{
}
public FormServices(FormClient formClient)
{
_formClient = formClient;
}
public SaveCrmObjectResult SaveForm(string userName, string password, FormInfo formInfo)
{
return _formClient.SaveForm(Auth.UserName, Auth.Password, formInfo);
}
}
}
-------------------------------
using PayamGostarConsoleWcfSamples.pgform;
namespace PayamGostarConsoleWcfSamples
{
using System;
class Program
{
static void Main(string[] args)
{
// Init
IFormServices form = new FormServices();
IPersonServices person = new PersonServices();
// Form samples
var findFormById = form.FindFormById(Guid.NewGuid());
var saveCrmObjectResult = form.SaveForm(new forminfo
{
Subject = "test",
CrmObjectTypeCode = formTypeKey,
Identityid = "9b78a24d-e777-428c-9439-8ef9a93ce925",
ExtendedProperties=null,
Crmid=null,
Tags=new string[] { "First", "Second" }
});
}
}
}
با سلام
بعد از تکمیل پارامتر های CrmObjectTypeCode و Subject با خطای زیر مواجه می شویم.
stdClass Object ( [SaveFormResult] => stdClass Object ( [Message] => Object reference not set to an instance of an object. [Success] => [CrmId] => 00000000-0000-0000-0000-000000000000 ) )
لازم به ذکر است که در تنظیمات فرم کد مربوطه تنظیم و مقدار دهی شده است
سلام خدمت شما
شما به راحتی میتوانید با نرم افزار های wcftestclient و wcfteststorm وب سرویس خودتون رو تست کنید
چنانچه اونجا جواب گرفتید مشکل سمت کد نویسی شماست
چنانچه بعد از تست با نرم افزار های مذکور همچنان مشکل داشتید نمومه کد پیاده سازی شده خودتون رو کامل اینحا ارسال کنید تا برسی کنیم
برنامه نویسی اتصال و اینتراکشن با وب سرویس پیام گستر با زبان php می باشد.
از نظر نحوه کد زنی بارها بررسی شده و مشکلی وجود ندارد.
در داکیومت شما در مورد خطای ذکر شده هیچ راهنمایی وجود ندارد.
لطفا در مورد علل ایجاد خطای ذکر شده راهنمایی بفرمائید
با تشکر
نمونه کد زده شده در کادر زیر آماده است:
ممنون از نمونه کد ارسالیتون ولی به وضوح مشخصه که داکیومنت مطالعه نشده
این خطایی که شما دارید دریافت میکنید حاصل از مقدار ندادن به یک پارامتر الزامی است شما پارامتر هایی که در داکیومنت نوشته شده را استفاده کنید و سپس هرکدام را که نیاز ندارید مقدار null پاس دهید
شما در این نمونه کد فقط همون سمپل کد رو به php تغییر دادید
شما جهت اطمینان کامل از صحت عملکرد وب سرویس میتونید از ابزار های wcftestclient و wcfteststorm استفاده کنید
متد با تمام پارامتر ها تکمیل و ارسال شده و همچنان خطا می دهد
مشکل قبلی حل شد
مشکل جدید این است که پارامتر ExtendedProperties را زمانی که مقداردهی می کنیم در سیستم چیزی ثبت نمی شود
کد زیر را بررسی کنید
برای .net هم سمپل دارید؟