This is an old revision of the document!


STOP / Start Email Instance

This script is a way to automate the Email Instance of ECE to Stop and Start. This achieves the same thing which can be done manually via the SPOG GUI - as outlined below.

  • Create a dedicated ECE Partition administrator account, e.g. pa_api or similar (pa_tst_api in below script)
  • Install PowerShell 7
  • Configure the relevant parameters in the PowerShell script below and configure as a scheduled task - to stop and resume when required. e.g. Stop at 8pm, Start at 8am.

To Stop the Instance use the Script Argument “stop” To Start the Instance use the Script Argument “Start”

ACTION - Program/Script =

"C:\Program Files\PowerShell\7\pwsh.exe"

Arguments =

"C:\ScriptFolder\ECE-Email-Dispatcher-Stop-Start\ECE-Email-Stop-Start_TST.ps1" stop

ACTION - Program/Script =

"C:\Program Files\PowerShell\7\pwsh.exe"

Arguments =

"C:\ScriptFolder\ECE-Email-Dispatcher-Stop-Start\ECE-Email-Stop-Start_TST.ps1" start
ece-email-pause-and-resume.ps1
# Author : Gerard O'Rourke
# 16/04/2021
# Version 1.00
# 
# Notes
# -----------------------------------------------------------------
# Status Code for Successful Login and Logout: 204
# Status Code for Successful STOP / START of DX Instance: 202
# -----------------------------------------------------------------
#
# Create a dedicated partition administration user account on ECE
# Use Powershell 7 for this script.
 
 
$ECE_HOST = 'ece-webserver.example.com'
$DX_INSTANCE = '998'
$AUTH_BODY = '{"userName": "pa_tst_api","password": "4p6hVfwDsp2fsdfsT"}'
 
$ECE_LOGIN_URL = "https://$ECE_HOST/system/ws/v19/authentication/user/login?forceLogin=yes"
$ECE_LOGOUT_URL = "https://$ECE_HOST/system/ws/v19/authentication/user/logout"
$ECE_DISPATCHER_INSTANCE_STOP_URL = "https://$ECE_HOST/system/ws/v19/administration/service/instance/$DX_INSTANCE/stop"
$ECE_DISPATCHER_INSTANCE_START_URL = "https://$ECE_HOST/system/ws/v19/administration/service/instance/$DX_INSTANCE/start"
 
 
$SMTP_SERVER = 'mailserver.example.com'
$EMAIL_FROM = 'ECE TEST API Script <[email protected]>'
$EMAIL_TO = 'Gerry ORourke <[email protected]>','Banana Boo <[email protected]>'
 
$CONTENT_TYPE = "application/json"
$timeNow = (get-date).ToString('T')
$errorCode = 0
 
#Email Function
function SendEmail{
	Send-MailMessage -From $EMAIL_FROM  -To $EMAIL_TO -Subject $EMAIL_SUBJECT -Body $EMAIL_BODY -SmtpServer $SMTP_SERVER 
}
 
# Check Argument 'stop' or 'start' has been set.
if (($args[0] -eq 'stop') -or ($args[0] -eq 'start'))
{
	echo "Attempting to $args the Email Dispatcher Instance"
}
else
{
	echo "You must pass the parameter 'stop' or 'start' for this app to function."
	echo "Pausing for 10 seconds before exiting..."
	exit
}
 
##### LOGIN #####
try
{
	$LoginRequest = Invoke-WebRequest -SkipCertificateCheck -uri $ECE_LOGIN_URL -Method 'POST' -ContentType $CONTENT_TYPE -Body $AUTH_BODY
    $StatusCode = $LoginRequest.StatusCode
}
catch
{
    $StatusCode = $_.Exception.Response.StatusCode.value__
}
 
if ($StatusCode -eq "204") 
{
	#Login Successful 
	echo "Login Successful."
	$AUTH_TOKEN = $LoginRequest.Headers["X-egain-session"]
	echo "The 'X-egain-session' AuthToken is: $AUTH_TOKEN"
}
else
{
	#Login Failed
	echo "Login Failed. Status Code: $StatusCode"
	$EMAIL_BODY = "Failed Login. The Status Code Returned was $StatusCode. Time: $timeNow"
	$EMAIL_SUBJECT = "ECE API Script - Failed Login."
	SendEmail
	echo "Notification Email Sent."
	exit
}
 
 
##### STOP Dispatcher Instance #####
if ($args[0] -eq 'stop')
{
	try
	{
		$StopRequest = Invoke-WebRequest -SkipCertificateCheck -Method 'PUT' -ContentType $CONTENT_TYPE -Headers @{'X-egain-session' = "$AUTH_TOKEN"} -uri $ECE_DISPATCHER_INSTANCE_STOP_URL
		$StatusCode = $StopRequest.StatusCode
        #$Content = $StopRequest.Content
	}
	catch
	{
		$StatusCode = $_.Exception.Response.StatusCode.value__
		$ResponseHeaders = $_.Exception.Response
        $ResponseBody = $_.ErrorDetails.Message
	}
 
	if ($StatusCode -eq "202") 
	{
		#Stopped Successful 
		echo "Stopped ECE Distpatcher Instance Successful."
	}
	else
	{
		#Stopped Failed
		echo "Email Distpatcher Stop Request Failed.`nStatus Code: $StatusCode.`nDetails: $ResponseBody"
 
        echo "---"
        echo "$ResponseBody"
        echo "---"
		$EMAIL_BODY = "Email Distpatcher Stop Request Failed.`nStatus Code: $StatusCode.`nTime: $timeNow.`nDetails: $ResponseBody"
		$EMAIL_SUBJECT = 'ECE API Script - Failed to Stop Dispatcher'
		SendEmail
		echo "Notification Email Sent."
        $errorCode = 1
	}
}
 
 
##### START Dispatcher Instance #####
if ($args[0] -eq 'start')
{
	try
	{
		$StartRequest = Invoke-WebRequest -SkipCertificateCheck -Method 'PUT' -ContentType $CONTENT_TYPE -Headers @{'X-egain-session' = "$AUTH_TOKEN"} -uri $ECE_DISPATCHER_INSTANCE_START_URL
		$StatusCode = $StartRequest.StatusCode
	}
	catch
	{
		$StatusCode = $_.Exception.Response.StatusCode.value__
		$ResponseHeaders = $_.Exception.Response
        $ResponseBody = $_.ErrorDetails.Message
	}
 
	if ($StatusCode -eq "202") 
	{
		#Start Instance Successful 
		echo "Started ECE Distpatcher Instance Successful."
	}
	else
	{
		#Start Instance Failed
		echo "Email Distpatcher Start Request Failed. Status Code: $StatusCode"
		$EMAIL_BODY = "Email Dispatcher Start Request Failed.`nStatus Code: $StatusCode.`nTime: $timeNow.`nDetails: $ResponseBody"
		$EMAIL_SUBJECT = 'ECE API Script - Failed to Start Dispatcher'
		SendEmail
		echo "Notification Email Sent."
        $errorCode = 1
	}
}
 
##### Logout #####
try
{
	$LogoutRequest = Invoke-WebRequest -SkipCertificateCheck -Method 'DELETE' -ContentType $CONTENT_TYPE -Headers @{'X-egain-session' = "$AUTH_TOKEN"} -uri $ECE_LOGOUT_URL 
	$StatusCode = $LogoutRequest.StatusCode
}
catch
{
	$StatusCode = $_.Exception.Response.StatusCode.value__
}
 
if ($StatusCode -eq "204") 
{
	#Logout Successful 
	echo "Logged Out Successfully."
    echo "errorCode: $errorCode"
	if ($args[0] -eq 'stop' -And $errorCode -eq 0)
	{
		$EMAIL_BODY = "Email Dispatcher Successfully Stopped. Time: $timeNow"
		$EMAIL_SUBJECT = 'ECE API Script - Successfully Stopped Email Dispatcher Instance'
	SendEmail
	echo "Notification Email Sent."
	}
	if ($args[0] -eq 'start' -And $errorCode -eq 0)
	{
		$EMAIL_BODY = "Email Dispatcher Successfully Started. Time: $timeNow"
		$EMAIL_SUBJECT = 'ECE API Script - Successfully Started Email Dispatcher Instance'
	SendEmail
	echo "Notification Email Sent."
	}
	exit
}
else
{
	#Logout of the Instance Failed
	echo "Logging out of the API has Failed. Status Code: $StatusCode"
	$EMAIL_BODY = "Email Dispatcher Logout Request Failed. Status Code: $StatusCode. Time: $timeNow"
	$EMAIL_SUBJECT = 'ECE API Script - Failed to Logout'
	SendEmail
	echo "Notification Email Sent."
	exit
}
  • vendors/cisco/uc/ece/stop-start-email-instance.1621347146.txt.gz
  • Last modified: 2021/05/18 15:12
  • by gerardorourke