动态内容页使用页面编写器API
交互API非常通用,可以以许多不同的方式利用它来解决许多不同的用例。
您是否曾经希望内部网上的页面与外部系统生成的内容自动更新(同步)?好吧,你很幸运!我们将使用交互页面编写器API来创建一个类似cronjob的同步来发布动态数据到交互。这可以用来创建一个动态内容用例的数组——关于一些常见的用例,请参见下面的列表。
常用用例
- 游戏排行榜
- 进度更新
- 员工认可
- 自动分析和预测发布
- KPI的
- 图表、图表和指标
- 销售进展
- 项目消耗和循环更新
- 来自外部系统的数据转储包装在HTML中
教程
我们将为你提供。net Framework/Core c# (Restsharp)中实现同步所需的样板代码。当然,这可以转换为能够将内容推送到REST API端点的任何语言或系统。
应用程序流
- 获取交互实例的API域。
- 使用基本身份验证流程进行身份验证。
- 创建HTML内容(手动或使用另一个进程动态创建)
- 将生成的内容推到Page Composer API
1.寻找API域
Interact提供了一个简单的端点来获取关于您的内部网实例的详细信息。我们可以通过访问找到您的API域https://your-intranet.interactgo.com/info
此表格以JSON格式列出以下资料:
- API域(必选)
- 身份验证模式
- 租户GUID(必选)
- 的名字
- 市场API路径
我们需要的信息以粗体突出显示,使用它我们现在可以开始身份验证。
// apiDomain = "https://us-lb-api-01.interactgo.com/api";string tenantGuid = "0000000 -0000-0000-0000-000000000000";
2.API认证
在使用任何交互API时,您需要对大多数API调用进行身份验证。您可以在我们的网站上了解更多关于API认证的信息API文档.我们需要使用/令牌
令牌端点以接收我们的持名令牌。
Interact使用OAuth 2.0密码持有者认证机制获取access_token它允许您使用API端点执行操作。
一旦我们有了代币,我们就可以继续内容生成。
身份验证
的password-bearer身份验证需要用户名和密码进行身份验证。这可能是诱人的使用个人帐户来做这件事,但它可能会中断连接,如果用户曾经被取消激活(例如。离开公司。)交互会建议建立一个专用用户帐号在交互中,它只用于API连接(类似于服务帐户.)
字符串令牌= "";//替换为/token响应中的token
3.动态内容生成
现在是最重要的部分,内容生成,它可以由应用程序、脚本、服务或任何能够创建HTML内容的东西动态生成。HTML内容是交互页面的核心,因此它是动态页面更新的关键组件。交互页面API目前只支持HTML。
在下面的例子中(参见第50行),我们创建一个简单的提醒栏(div),它写出当前的日期和时间。这可以被高度复杂的内容所取代,包括HTML、CSS和JavaScript的组合。我们已经成功地在这些上传中嵌入了完整的React.js应用程序。
上次同步:{日期时间。现在}< / div >
自定义小部件库展示我们的一些内部作品/实验即将到来-请随时伸出手来看看艺术的可能。
4.更新内容
一旦我们的内容已经生成,我们现在可以推动它的交互页面Composer API。我们会用到页面编写器PUT端点。
样板
结合以上所有步骤,我们最终得到:
使用系统;使用Newtonsoft.Json;使用RestSharp;namespace PageComposerSync{静态类程序{静态void Main() {// API字符串apiDomain = "https://us-lb-api-01.interactgo.com/api";string tenantGuid = "0000000 -0000-0000-0000-000000000000";字符串令牌= "";//替换为/token响应//同步的目标页面ID int pageId = 2000;//创建RestClient var RestClient = new RestClient(apiDomain);//创建页面更新请求var Request = new RestRequest($"/ Page /{pageId}/composer", Method.PUT);请求。AddHeader("X-Tenant", tenantGuid); request.AddHeader("Authorization", $"Bearer {token}"); request.AddHeader("Content-Type", "application/json"); // Add request content - Page Composer PUT Schema (https://developer.interact-intranet.com/reference#pageidcomposer-1) var requestContent = new PageUpdateRequest(); /// Transition requestContent.Transition = new Transition { State = "published", Message = DateTime.Now.ToString() }; /// Page details - Tip: Use the Page Composer GET Endpoint to find all required meta information requestContent.Page = new Page() { ContentType = "html", TopSectionIds = new List() { 3141 }, // Required AuthorId = 2, // Required PublishAsId = null, AssetId = 1999, // Required Title = "Sync Page", // Required Summary = $"Sync Page Summary", // Required Content = new Content() { Html =(电子邮件保护)"上次同步:{日期时间。现在}< / div >" // Dynamic content here }, CategoryIds = new List() { 3145 }, // Required Features = new Features { DefaultToFullWidth = false, AllowComments = false, IsKeyPage = false, Recommends = new Recommends { MaxContentAge = null, Show = false } }, PubStartDate = DateTime.Today, // Required PubEndDate = DateTime.Today.AddDays(7), // Required ReviewDate = DateTime.Today.AddDays(7), // Required TagIds = new List
这是用.NET Core 3.1,Restsharp 106.10.1而且Newtonsoft。JSON 12.0.3.
样式和CSS
样式和CSS可以内联包含在样式标签中。
Hello World!这是我的动态内容
它可以作为内联样式包含。
<表> < tr风格= "粗细:大胆“> < th >行< / th > < th >名称< / th > < / tr > < /表>
推荐:或者可以包含在自定义CSS在交互中设置全局存储表示和样式层。类中引用全局声明的样式自定义CSS在HTML中。
如。
自定义CSS
.table {background-color:透明;利润:0.5 em;} .header-row {font-weight:粗体;颜色:darkgrey;}
HTML上传
<表类= "表" > < tr类=“标题行”> < th >行< / th > < th >名称< / th > < / tr > < /表>
自动化
您可以扩展样板以适应需求,并构建或使用cronjob在适合您的数据需求的计划上进行调度。您的页面将动态更新,并在内部网中可见。
更新 一年多前