---
sourceDocument: Xanadu IT Service Management
sourceDocumentLink: https://www.servicenow.com/docs/r/de-DE/xanadu/it-service-management

 Release :

    - xanadu

ft:locale :

    - de-DE

ft:publication_title :

    - Xanadu IT Service Management

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

# Headernachricht auf der Zielseite konfigurieren

# Headernachricht auf der Zielseite konfigurieren {#ariaid-title1}

* Freigeben Version: Xanadu
* 
* Aktualisiert 1. August 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 10 Minuten Lesedauer

Konfigurieren Sie die Headernachricht, die Teil des Begrüßungstexts auf der Zielseite ist. Beispiel: „Sie haben Rufbereitschaft bis Montag, den 21. März."

## Vorbereitungen

Erforderliche Rolle: admin

## Warum und wann dieser Vorgang ausgeführt wird

Das Daten-Broker-Serverskript „Service Desk-Mitarbeiterschicht abrufen" ruft die SOWServiceDeskAgentShift-Skripteinbindungen auf, um die Schichtinformationen im Begrüßungstext anzuzeigen.

Während der Anzeigetext für die Standardzielseite angepasst werden kann, können Sie visuelle Stiländerungen am Text nur vornehmen, wenn Sie eine Kopie der Zielseite erstellen.
Abbildung : 1. Headerabschnitt

## Prozedur

1. Navigieren Sie zu AlleService Operations-Arbeitsbereich Admin CenterÜbersicht.
2. Wählen Sie auf der Registerkarte Übersicht im Abschnitt Ersteinrichtung die Option Zielseite konfigurieren.
3. Wählen Sie im Formular „Zielseite" neben Begrüßungen die Option Konfigurieren.  
   Das Formular „Skripteinbindungen" wird für SOWServiceDeskAgentShift angezeigt, das intern SOWServiceDeskAgentShiftSNC aufruft.
4. Kopieren Sie den Wert des Felds Skript von SOWServiceDeskAgentShiftSNC.
   1. Navigieren Sie zu AlleSystemdefinitionSkripteinbindungen.
   2. Öffnen Sie in der Liste der Skripteinbindungen den Eintrag „SOWServiceDeskAgentShiftSNC".
   3. Kopieren Sie den Wert des Felds Skript.
   {#modify-greeting-text__substeps_gnk_tzm_2cc}
5. Bearbeiten Sie das Skript SOWServiceDeskAgentShift.
   1. Navigieren Sie zu AlleSystemdefinitionSkripteinbindungen.
   2. Öffnen Sie in der Liste der Skripteinbindungen den Eintrag „SOWServiceDeskAgentShift".
   3. Fügen Sie den Wert des Felds Skript ein, den Sie aus SOWServiceDeskAgentShiftSNC kopiert haben.  

          initialize: function() { 

                  this.PLUGINS = { 

                      ON_CALL: "com.snc.on_call_rotation", 

                      SHIFT_PLANNING: "com.sn_shift_planning" 

                  }; 

                  this.DAYS_AHEAD = gs.getProperty('com.snc.on_call_rotation.upcoming_rota_days', 30); 

                  this.DATE_FORMAT = gs.getDateFormat(); 

                  this.TIME_FORMAT = gs.getTimeFormat(); 

                  this.WFO_SCHEMA_IDENTIFIER = 'readInTimezone'; 

                  this.WFO_ONCALL_TYPE_IDENTIFIER = 'oncallAPIReadInTimezone'; 

                  this.WEEK_DAY_FORMAT = 'EEEE'; 

                  this.FORMAT = { 

                      SERVICE_DESK_HEADER: 'SERVICE_DESK_HEADER' 

                  }; 

                  this.DATE_TIME_FORMAT_FULL = "full"; 

              }, 

           

              getUpcomingShift: function(userId, outputFormat, wfoShift) { 

                  var upcomingShifts, gd = new GlideDate(); 

                  var from = gd.getDisplayValueInternal(); 

                  gd.addDaysLocalTime(this.DAYS_AHEAD); 

                  var to = gd.getDisplayValueInternal(); 

                  var mayBeWFOUser = userId == gs.getUserID() ? gs.hasRole("sn_shift_planning.agent") : true; 

                  if (GlidePluginManager.isActive(this.PLUGINS.SHIFT_PLANNING) && mayBeWFOUser && wfoShift) 

                      upcomingShifts = this.getWFOShifts(from, to, userId); 

                  var isWFOResponseValid = Array.isArray(upcomingShifts) && upcomingShifts.length > 0; 

                  if (!isWFOResponseValid && GlidePluginManager.isActive(this.PLUGINS.ON_CALL)) 

                      upcomingShifts = this.getOnCallShifts(from, to, userId); 

                  return this.getFormattedShift(upcomingShifts, outputFormat); 

              }, 

           

              getWFOShifts: function(from, to, userId) { 

                  var smUtil = new sn_shift_planning.ScheduleManagerUtil(); 

                  var defaultEventCategories = [ 

                      smUtil.WORK_CATEGORY_SYS_ID, 

                      smUtil.ON_CALL_CATEGORY_SYS_ID 

                  ]; 

                  var params = { 

                      "assignmentGroups": "", 

                      "individualAgents": userId, 

                      "startDate": from, 

                      "endDate": to, 

                      "published": true, 

                      "eventCategories": defaultEventCategories, 

                      "filter": { 

                          "sn_shift_planning_agent_schedule": { 

                              "event": ["8d03fd9b0f310010717cc562ff767e4a", "936319993bd02010e81a4ee1f3efc419"] 

                          } 

                      } 

                  }; 

                  var upcomingShifts = []; 

                  try { 

                      var agentScheduleRESTAPIUtils = new sn_shift_planning.AgentScheduleRESTAPIUtils(); 

                      var spans = agentScheduleRESTAPIUtils.retrieveAgentSchedulesFromParams(params); 

                      if (spans && spans.shiftData && spans.shiftData.user && spans.shiftData.user.data && spans.shiftData.user.data.length > 0 && spans.shiftData.user.data[0].schedules) { 

                          var schedules = spans.shiftData.user.data[0].schedules, 

                              arrayUtil = new global.ArrayUtil(); 

                          for (var schedule in schedules) 

                              upcomingShifts = arrayUtil.union(upcomingShifts, schedules[schedule]); 

                      } 

                  } catch (e) { 

                      gs.error("SOWServiceDeskAgentShiftSNC: Error fetching WFO shifts"); 

                  } 

           

                  return upcomingShifts; 

              }, 

           

              getOnCallShifts: function(from, to, userId) { 

                  var onCallCommon = new global.OnCallCommon(); 

                  var onCallGroups = onCallCommon.getMyGroups(); 

                  var spans = new global.OCRotationV2(null, global.OCRotationV2.DEFAULT_FORMAT_OPTION).setStartDate(from).setEndDate(to).setUserIds(userId).setGroupIds(onCallGroups).getSpans(); 

                  var upcomingShifts = []; 

                  for (var i = 0; i < spans.length; i++) 

                      if ((spans[i].type == "roster" || spans[i].type == "override") && spans[i].user_id == userId) 

                          upcomingShifts.push(spans[i]); 

                  return upcomingShifts; 

              }, 

           

              getFormattedShift: function(upcomingShifts, outputFormat) { 

                  if (gs.nil(upcomingShifts)) 

                      return; 

                  switch (outputFormat) { 

                      case this.FORMAT.SERVICE_DESK_HEADER: 

                          return this.getServiceDeskFormattedShift(upcomingShifts); 

                      default: 

                          return upcomingShifts; 

                  } 

              }, 

           

              getServiceDeskFormattedShift: function(upcomingShifts) { 

                  var response = { 

                      shiftText: "", 

                      nearestShift: {} 

                  }; 

                  var startAttr = "start", 

                      endAttr = "end", 

                      isOnCall = true; 

                  var dateFormat = 'EEEE, MMM dd', 

                      timeFormat = 'hh:mm a'; 

                  var isWFOSchema = Array.isArray(upcomingShifts) && upcomingShifts.length > 0 && this.WFO_SCHEMA_IDENTIFIER in upcomingShifts[0]; 

                  if (isWFOSchema) 

                      startAttr = "scheduledStartTime", endAttr = "scheduledEndTime"; 

                  response.nearestShift = this.getNearestShift(upcomingShifts, startAttr, endAttr); 

                  if (response.nearestShift) { 

                      if (isWFOSchema) { 

                          if (response.nearestShift.schedule && !(this.WFO_ONCALL_TYPE_IDENTIFIER in response.nearestShift.schedule)) 

                              isOnCall = false; 

                      } 

                      if (isOnCall) { 

                          if (response.nearestShift.isCurrent) { 

                              if (response.nearestShift.roster_name) 

                                  response.shiftText = gs.getMessage("You are on-call until {0} as {1}", [this.getFormattedDateTime(response.nearestShift[endAttr]), response.nearestShift.roster_name]); 

                              else 

                                  response.shiftText = gs.getMessage("You are on-call until {0}", [this.getFormattedDateTime(response.nearestShift[endAttr])]); 

                          } else { 

                              if (response.nearestShift.roster_name) 

                                  response.shiftText = gs.getMessage("Your next on-call shift starts on {0} as {1}", [this.getFormattedDateTime(response.nearestShift[startAttr]), response.nearestShift.roster_name]); 

                              else 

                                  response.shiftText = gs.getMessage("Your next on-call shift starts on {0}", [this.getFormattedDateTime(response.nearestShift[startAttr])]); 

                          } 

                      } else { 

                          if (response.nearestShift.isCurrent) { 

                              response.shiftText = gs.getMessage("Your shift ends on {0}", [this.getFormattedDateTime(response.nearestShift[endAttr])]); 

                          } else 

                              response.shiftText = gs.getMessage("Your next shift starts on {0}", [this.getFormattedDateTime(response.nearestShift[startAttr])]); 

                      } 

                  } 

           

                  return response; 

              }, 

           

              getNearestShift: function(upcomingShifts, startAttr, endAttr) { 

                  if (gs.nil(upcomingShifts) || gs.nil(startAttr) || gs.nil(endAttr)) 

                      return; 

                  var nearestShift; 

                  upcomingShifts.sort(function(shift_1, shift_2) { 

                      var gdt1 = new GlideDateTime(); 

                      gdt1.setDisplayValueInternal(shift_1[startAttr]); 

                      var gdt2 = new GlideDateTime(); 

                      gdt2.setDisplayValueInternal(shift_2[startAttr]); 

                      return GlideDateTime.subtract(gdt2, gdt1).getNumericValue(); 

                  }); 

                  var currentDateTime = new GlideDateTime(), 

                      startDateTime = new GlideDateTime(), 

                      endDateTime = new GlideDateTime(); 

                  for (var i = 0; i < upcomingShifts.length; i++) { 

                      startDateTime.setDisplayValueInternal(upcomingShifts[i][startAttr] + ""); 

                      endDateTime.setDisplayValueInternal(upcomingShifts[i][endAttr] + ""); 

                      if (currentDateTime.onOrBefore(endDateTime)) { 

                          nearestShift = upcomingShifts[i]; 

                          if (currentDateTime.onOrAfter(startDateTime)) 

                              nearestShift.isCurrent = true; 

                          else 

                              nearestShift.isCurrent = false; 

                          break; 

                      } 

                  } 

                  return nearestShift; 

              }, 

           

              getFormattedDateSpan: function(date, dateFormat, timeFormat) { 

                  var formattedDate = this.getFormattedDate(date, dateFormat); 

                  var dateAmPmTime = this.getFormattedTime(date, timeFormat); 

                  return formattedDate + " " + dateAmPmTime; 

              }, 

           

              getFormattedDate: function(inputDate, format) { 

                  var date = new GlideDateTime(); 

                  date.setDisplayValueInternal(inputDate); 

                  format = !format ? this.DATE_FORMAT : format; 

                  var gd = date.getLocalDate(); 

                  return gd.getByFormat(format); 

              }, 

           

              getFormattedTime: function(inputDate, format) { 

                  var date = new GlideDateTime(); 

                  date.setDisplayValueInternal(inputDate); 

                  format = !format ? this.TIME_FORMAT : format; 

                  var gt = date.getLocalTime(); 

                  return gt.getByFormat(format); 

              }, 

           

              getFormattedDateTime: function(date) { 

                  var dateTime = new GlideDateTime(); 

                  dateTime.setDisplayValueInternal(date); 

                  return dateTime.getDisplayValueLang(this.DATE_TIME_FORMAT_FULL); 

              }, 

           

              endsToday: function(inputDate) { 

                  var inputGdt = new GlideDateTime(); 

                  inputGdt.setDisplayValueInternal(inputDate); 

                  return new GlideDateTime().getLocalDate().getValue() == inputGdt.getLocalDate().getValue(); 

              }, 

           

              endingTomorrow: function(inputDate) { 

                  var inputGdt = new GlideDateTime(); 

                  inputGdt.setDisplayValueInternal(inputDate); 

                  var tomorrowDateTime = new GlideDateTime(); 

                  tomorrowDateTime.addDaysLocalTime(1); 

                  return tomorrowDateTime.getLocalDate().getValue() == inputGdt.getLocalDate().getValue(); 

              }, 

   4. Bearbeiten Sie den folgenden Teil des Skripts wie erwähnt.  

                      if (isOnCall) { 

                          if (response.nearestShift.isCurrent) { 

                              if (response.nearestShift.roster_name) 

                                  response.shiftText = gs.getMessage("You are on-call until {0} as {1}", [this.getFormattedDateTime(response.nearestShift[endAttr]), response.nearestShift.roster_name]); 

                              else 

                                  response.shiftText = gs.getMessage("You are on-call until {0}", [this.getFormattedDateTime(response.nearestShift[endAttr])]); 

                          } else { 

                              if (response.nearestShift.roster_name) 

                                  response.shiftText = gs.getMessage("Your next on-call shift starts on {0} as {1}", [this.getFormattedDateTime(response.nearestShift[startAttr]), response.nearestShift.roster_name]); 

                              else 

                                  response.shiftText = gs.getMessage("Your next on-call shift starts on {0}", [this.getFormattedDateTime(response.nearestShift[startAttr])]); 

                          } 

                      } else { 

                          if (response.nearestShift.isCurrent) { 

                              response.shiftText = gs.getMessage("Your shift ends on {0}", [this.getFormattedDateTime(response.nearestShift[endAttr])]); 

                          } else 

                              response.shiftText = gs.getMessage("Your next shift starts on {0}", [this.getFormattedDateTime(response.nearestShift[startAttr])]); 

                      } 

   {#modify-greeting-text__substeps_q1j_21n_2cc}
6. Wählen Sie Aktualisieren.

