Anda di halaman 1dari 13

FINAL TEST - Skills Assessment

PETUNJUK PENGERJAAN :
1. Jangan lupa untuk mengunduh file devasc-sa.py dari link drive yang sudah
diberikan oleh dosen
2. Kerjakan final test ini sesuai dengan instruksi dalam file ini
3. Jawab pertanyaan dalam file ini menggunakan font WARNA BIRU
4. Simpan (save) file jawaban ini dalam tipe PDF dengan format nama sebagai
berikut :
File : NAMA LENGKAP-NIM-KELAS.PDF
Contoh : Ratih Nindyasari-202051001-A.PDF
5. Unggah file jawaban ke dalam sunan. Deadline : Selasa, 15 Juni 2021, 23.59 WIB.
Selamat Mengerjakan.
Petunjuk : Buka kembali modul Lab 4.9.2 dan penjelasan videonya.

Objectives
Part 1: Collect Required API Documentation
Part 2: Code a Webex Teams Bot

Latar Belakang
Python dapat digunakan untuk mengintegrasikan API Call dari layanan yang berbeda. Dalam skill assessment
ini, Anda akan mengedit dan memodifikasi kode Python untuk bot Tim Webex yang mengintegrasikan API
Webex, MapQuest, dan ISS. Code/Script terus-menerus memeriksa pesan di ruang Tim Webex yang
ditentukan pengguna yang dimulai dengan garis miring (/) diikuti dengan nama kota (mis. /Washington, DC).
Ketika pesan seperti itu ditemukan, nama kota diekstraksi dan digunakan dengan layanan API MapQuest untuk
mendapatkan koordinat GPS untuk kota yang ditentukan. Selanjutnya, koordinat ini digunakan dengan ISS API
untuk menemukan tanggal dan waktu ISS terbang di atas. Akhirnya, sebuah pesan dikirim kembali ke ruang
Tim Webex yang memberi tahu pengguna tentang jalan layang ISS berikutnya untuk kota yang ditanyakan.
Setelah selesai, bot Tim Webex akan:

● Mintalah token akses kepada pengguna atau untuk menggunakan token akses hard-coded.

● Menampilkan daftar ruang Tim Webex pengguna.

● Tanyakan kepada pengguna ruang Tim Webex mana yang akan dipantau untuk query yang dimulai dengan
“/”.

● Ekstrak nama kota dari pesan yang dimulai dengan “/” (mis. /Washington, DC -> Washington, DC).

● Minta garis lintang dan bujur kota tertentu menggunakan API MapQuest.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 1 of 13 www.netacad.com
FINAL TEST - Skills Assessment

● Minta tanggal dan waktu flyover berikutnya menggunakan ISS API.

● Kirim kembali informasi flyover ISS berikutnya ke ruang Tim Webex yang ditentukan.

Resources Yang Dibutuhkan


● 1 PC /Laptop beserta OSnya

● MapQuest and Webex Teams developer access and API keys

● Virtual Box or VMWare

● DEVASC Virtual Machine

● The devasc-sa.py student script.


Catatan: Untuk melindungi lingkungan aplikasi seperti Webex Teams dari bot atau upaya akses berbahaya,
sebagian besar API menilai ketersediaan batas. Jika Anda melakukan banyak panggilan API yang sama,
panggilan API Anda mungkin diblokir untuk jangka waktu tertentu. Batas waktu biasanya kurang dari 5 menit.

Langkah-langkah :

Part 1: Kumpulkan Dokumentasi API yang diperlukan


Di Bagian ini, Anda akan mengumpulkan informasi dari dokumentasi Webex, MapQuest, dan ISS API. Informasi
ini akan diperlukan di Bagian 2 saat Anda membuat kode bot Tim Webex. Anda juga akan menyelidiki library
waktu Python yang akan Anda gunakan untuk mengkonversi timestamp waktu Epoch menjadi tanggal dan
waktu yang dapat dibaca manusia.

Step 1: Jalankan DEVASC VM.


Meskipun Anda dapat menyelesaikan Skill Assessment ini di lingkungan lain, instruksi ini hanya untuk DEVASC
VM. Instruksi untuk lingkungan lain tidak disertakan.

Step 2: Selidikilah dokumentasi untuk ruang Tim Webex dan API pesan.
a. Login ke Webex sebagai account developer anda.

b. Cari dan salin/copy token akses pribadi Anda. Berapa lama masa pakai token Anda? 12 JAM.

c. Temukan URL yang akan mencantumkan semua room tempat Anda berada. Catat metode HTTP dan URL:

GET - https://webexapis.com/v1/rooms
d. Temukan URL yang mencantumkan semua pesan/message untuk ruangan/room tertentu. Catat method
HTTP dan URL:

GET - https://webexapis.com/v1/messages
e. Temukan URL yang akan membuat/create pesan/message untuk ruangan/room tertentu. Catat method
HTTP dan URL.

POST - https://webexapis.com/v1/messages

Step 3: Selidikilah kunci lokasi (location key) untuk API alamat MapQuest.
a. Login ke MapQuest dengan menggunakan account developer anda.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 2 of 13 www.netacad.com
FINAL TEST - Skills Assessment

b. Cari dan salin/copy Consumer Key Anda. Kapan kunci Anda kedaluwarsa/expired?
Tidak memiliki expired
Bot Tim Webex akan menggunakan data lokasi yang dikembalikan melalui panggilan ke API alamat MapQuest.

c. Buka Chromium dan paste di URL berikut, ganti your_api_key dengan kunci MapQuest Anda:
https://www.mapquestapi.com/geocoding/v1/address?key=your_api_key&location=Washington,DC

d. Perhatikan bahwa kunci lokasi/location key MapQuest menyertakan kunci untuk garis lintang (latitude) dan
garis bujur (longitude) untuk lokasi yang Anda masukkan. Catat nilai lat dan lng yang dikembalikan oleh
MapQuest untuk Washington, D.C dalam kode di bawah ini.
{
"info": {
"statuscode": 0,
"copyright": {
"text": "© 2020 MapQuest, Inc.",
"imageUrl": "http://api.mqcdn.com/res/mqlogo.gif",
"imageAltText": "© 2020 MapQuest, Inc."
},
"messages": []
},
"options": {
"maxResults": -1,
"thumbMaps": true,
"ignoreLatLngInput": false
},
"results": [
{
"providedLocation": {
"location": "Washington,DC"
},
"locations": [
{
"street": "",
"adminArea6": "",
"adminArea6Type": "Neighborhood",
"adminArea5": "Washington",
"adminArea5Type": "City",
"adminArea4": "District of Columbia",
"adminArea4Type": "County",
"adminArea3": "DC",
"adminArea3Type": "State",
"adminArea1": "US",
"adminArea1Type": "Country",
"postalCode": "",
"geocodeQualityCode": "A5XAX",
"geocodeQuality": "CITY",
"dragPoint": false,
"sideOfStreet": "N",
"linkId": "282772166",
"unknownInput": "",

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 3 of 13 www.netacad.com
FINAL TEST - Skills Assessment
"type": "s",
"latLng": {
"lat": 38.892062,
"lng": -77.019912
},
"displayLatLng": {
, "lat": 38.892062
"lng": -77.019912
},
<output omitted>
}
]
}
]
}

Step 4: Selidikilah dokumentasi untuk ISS pass times API.


a. Cari menggunakan kata kunci “ISS API documentation” di internet.
b. Di situs web dokumentasi ISS API, klik dokumentasi API/ API documentation untuk ISS Pass Times.
c. Apa dua parameter yang diperlukan (disebut query string di situs web) untuk API ISS Pass Times?
- lat (latitude in decimal degrees of the ground station)
- lon (longitude in decimal degress of the ground station)
a. Apa parameter opsional untuk ISS pass times API?
- alt (altitude in meters of the ground station)
- n (requested number of predictions)
a. Apa URL untuk ISS pass times API?
http://api.open-notify.org/iss/v1/
Step 2: Selidikilah respons key untuk ISS pass times API.
a. Buka Postman dan buat baru Untitled Request.
b. Paste di URL ISS pass times.
c. Replace nilai latitude dan nilai longitude untuk nilai Washington, D.C.
d. Klik Send. Anda harus mendapatkan output yang mirip dengan berikut ini, meskipun nilai waktu Anda
akan berbeda. Secara default, ISS pass times API mengembalikan 5 pass berikutnya di lokasi yang
ditentukan.
{
"message": "success",
"request": {
"altitude": 100,
"datetime": 1592669962,
"latitude": 38.892062,
"longitude": -77.019912,

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 4 of 13 www.netacad.com
FINAL TEST - Skills Assessment
"passes": 5
},
"response": [
{
"duration": 602,
"risetime": 1592672814
},
{
"duration": 649,
"risetime": 1592678613
},
{
"duration": 423,
"risetime": 1592684494
},
{
"duration": 475,
"risetime": 1592733041
},
{
"duration": 651,
"risetime": 1592738727
}
]
}

Step 3: Selidikilah epoch timestamps dan cara mengkonversinya ke format yang dapat dibaca
manusia.
Di Part 2, Anda akan menggunakan fungsi ctime dari library time di Python untuk mengubah waktu epoch
menjadi tanggal dan waktu yang dapat dibaca manusia. Tanggal dan waktu tersebut kemudian akan
dimasukkan ke dalam pesan yang diposting oleh bot Tim Webex ke sebuah ruangan/room.
Cari di internet untuk dokumentasi library time di Python untuk menjawab pertanyaan berikut. Sebaiknya, Anda
harus meninjau dokumentasi dari python.org meskipun jawaban dapat ditemukan di tempat lain.

a. Dalam kaitannya dengan waktu komputer, apa arti dari istilah “epoch”? (jelaskan dengan menggunakan
kalimat sendiri, dilarang keras untuk copy/paste langsung dari internet/sumber lain)

EPOCH adalah iterasi tanpa rambatan balik (hanya maju saja). Sama seperti
ayunan bandul, 1 epoch sama dengan titik A-B-C-D-C-B-A.
b. Apa fungsi dari time library akan mengembalikan epoch time pada platform tertentu?
gmtime
c. Anda dapat melihat tahun, bulan, hari, jam, dan seterusnya untuk awal epoch dengan kode Python
berikut. Buka terminal, mulai Python 3, import library time, lalu ganti <function> dengan fungsi yang Anda
temukan di atas/di point b.
devasc@labvm:~$ python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 5 of 13 www.netacad.com
FINAL TEST - Skills Assessment
>>> import time
>>> print(str(time.gmtime(0)))
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0,
tm_wday=3, tm_yday=1, tm_isdst=0)
>>>

d. Epoch time yang ada DEVASC VM sama dengan yang ada di Unix. Kapan epoch dimulai?
January 1st, 1970 at 00:00:00 UTC
e. Risetime pada Langkah 4/d dinyatakan dalam jumlah detik sejak waktu epoch. Fungsi waktu apa yang akan
mengubah risetime menjadi format yang dapat dibaca manusia?

strftime
f. Tanggal berapa untuk pertama kali risetime di Step 4/d?

>>> print(str(time.strftime('%a, %d %b %Y %H:%M:%S',


time.localtime(1592672814)))))

<Date and Time is printed here>

Sun, 21 Jun 2020 00:06:54


>>>

Part 2: Code a Webex Teams Bot


Note: Anda perlu membuka skrip devasc-sa.py dan siap mengedit untuk Bagian ini. Dapatkan skrip ini dari
instruktur/dosen Anda.
Anda tidak perlu menuliskan script secara full di devasc-sa.py, akan tetapi anda hanya perlu
menyempurnakannya. Perhatikan pada script yang ada tulisan <!!!REPLACEME with ….>, dibagian
itulah tempat anda menuliskan/memperbaiki scriptnya.
Di Part 2 ini, Anda akan menggunakan pemahaman Anda tentang Python dan REST API bersama dengan
dokumentasi API yang Anda kumpulkan di Part 1 untuk menyelesaikan kode bot Webex Teams.
Petunjuk: Simpan file asli sebagai nama yang berbeda jika Anda perlu memulai dari awal. Komentari kode
yang belum Anda uji. Saat Anda mengerjakan langkah-langkah berikut, simpan dan jalankan skrip Anda
sesering mungkin. Gunakan pernyataan cetak sementara untuk memverifikasi bahwa variabel Anda berisi data
yang Anda harapkan.

Step 1:Impor library untuk permintaan API, pemformatan JSON, dan konversi waktu epoch.

Step 2: Lengkapi pernyataan if untuk meminta token akses Webex kepada pengguna.
Untuk langkah ini, Anda diberikan prompt pengguna pertama dan else dari pernyataan if/else. Anda perlu
mengkodekan bagian if dari pernyataan yang akan dijalankan jika pengguna mengatakan "N" atau "n" untuk
menggunakan token akses hard-coded. Pernyataan if memeriksa nilai choice, kemudian jika "N" atau "n"
dimasukkan, menanyakan nilai token kepada pengguna. Nilai yang dimasukkan pengguna kemudian disimpan
dalam variabel accessToken. Variabel accessToken harus dibangun seperti versi pernyataan else.

Step 3: Berikan URL ke API ruang Tim Webex.


Gunakan dokumentasi Anda dari Part 1 untuk menentukan API ruang Webex Teams yang benar yang akan
mengembalikan daftar ruang tempat Anda menjadi anggota dan menyimpannya dalam variabel r.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 6 of 13 www.netacad.com
FINAL TEST - Skills Assessment

Step 4: Selesaikan loop untuk mencetak jenis dan judul setiap ruangan.
Daftar kamar yang disimpan dalam variabel r dikonversi ke JSON dan disimpan dalam variabel rooms.
Tambahkan pernyataan cetak/print yang akan menampilkan setiap jenis dan judul kamar.

Step 5: Berikan URL ke API pesan Webex Teams.


Gunakan dokumentasi Anda dari Part 1 untuk menentukan API pesan Webex Teams yang benar. Setiap detik,
bot akan melakukan panggilan ke API ini dan mencetak pesan terbaru yang diposting ke ruang/room.

Step 6: Berikan consumer Key API MapQuest Anda.


Anda mendokumentasikan/menyimpan kunci ini di Part 1.

Step 7: Berikan URL ke API alamat MapQuest.

Step 8: Berikan key value MapQuest untuk garis lintang dan garis bujur.
Gunakan dokumentasi Anda di Part 1 untuk menentukan format yang benar untuk menyimpan nilai untuk kunci
lintang dan bujur.

Step 9: Berikan URL ke ISS pass times API.


Gunakan dokumentasi Anda dari Part 1 untuk menentukan ISS past times API yang benar.

Step 10: Berikan nilai kunci ISS untuk waktu naik (risetime) dan durasi.
Gunakan dokumentasi Anda di Part 1 untuk menentukan format yang benar untuk menyimpan nilai untuk waktu
naik (risetime) dan kunci durasi (duration key).

Step 11: Ubah nilai risetime epoch menjadi tanggal dan waktu yang dapat dibaca manusia.
Di Part 1, Anda meneliti time library. Gunakan pengetahuan Anda untuk mengubah nilai epoch untuk risetime
menjadi data dan format waktu yang dapat dibaca manusia.

Step 12: Lengkapi kode untuk memformat pesan respons.


Gunakan variabel yang telah ditentukan untuk memformat pesan respons yang akan dikirim ke ruang Webex
Teams. Misalnya, pesan yang diposting di ruang akan terlihat seperti berikut ini di mana lokasi, waktu terbit,
dan durasi ditampilkan dalam huruf tebal.
In Austin, Texas the ISS will fly over on Thu Jun 18 18:42:36 2020 for 242 seconds.

Step 13: Lengkapi kode untuk memposting pesan ke ruang/room Tim Webex.
Langkah terakhir dalam program bot Webex Teams adalah memformat pesan API POST yang akan
mengirimkan responseMessage ke ruang Webex Teams. Berikan setiap variabel yang diperlukan dan URL
untuk API pesan Tim Webex untuk melengkapi kode.

Step 14: Jalankan program Anda, uji, dan pecahkan masalah seperlunya.
a. Di Webex Teams client anda, buat ruangan/room dengan nama My DEVASC SA Room.
b. Kirim sebuah pesan : Hello room!,
c. Run programmu dan pilih My DEVASC SA Room sebagai ruangan/room yang akan dipantau oleh bot Tim
Webex.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 7 of 13 www.netacad.com
FINAL TEST - Skills Assessment

d. Di My DEVASC SA Room, posting lokasi dalam format /location. Pesan yang dimulai dengan garis miring
memulai bot Tim Webex untuk melakukan tugasnya. Misalnya, berikut ini harus terjadi ketika Austin, Texas
dimasukkan.
In a terminal window:
devasc@labvm:~/$ python3 devasc-sa.py
Do you wish to use the hard-coded Webex token? (y/n)y
List of rooms:
Type: 'group' Name: My DEVASC SA Room
<rest of rooms listed>
Which room should be monitored for /location messages? My DEVASC SA Room
Found rooms with the word My DEVASC SA Room
My DEVASC SA Room
Found room : My DEVASC SA Room
Received message: Hello room!
Received message: Hello room!
Received message: Hello room!
Received message: Hello room!
<continues to print every 1 second>

In Webex Teams My DEVASC SA Room, add a location.


/Austin, Texas
In the terminal window, the following prints:
Received message: /Austin, Texas
Location: Austin, Texas
Location GPS coordinates: 30.264979, -97.746598
Sending to Webex Teams: In Austin, Texas the ISS will fly over on Sat Jun 20 20:18:29
2020 for 645 seconds.
Received message: In Austin, Texas the ISS will fly over on Sat Jun 20 20:18:29 2020
for 645 seconds.
Received message: In Austin, Texas the ISS will fly over on Sat Jun 20 20:18:29 2020
for 645 seconds.
Received message: In Austin, Texas the ISS will fly over on Sat Jun 20 20:18:29 2020
for 645 seconds.
Received message: In Austin, Texas the ISS will fly over on Sat Jun 20 20:18:29 2020
for 645 seconds. <continues to print every 1 second> In Webex Teams, to following displays.

In Austin, Texas the ISS will fly over on Sat Jun 20 20:18:29 2020 for 645 seconds.

e. Di jendela terminal Anda, masukkan Ctrl + C untuk keluar dari program.

Student Script
Di bawah ini adalah isi dari scrip devasc-sa.py. Namun, kami menyarankan Anda menggunakan file devasc-
sa.py yang Anda peroleh dari instruktur/dosen Anda. Meng-copy dan mem-paste skrip berikut dari dokumen
PDF atau Word dapat menimbulkan masalah pada saat proses running nanti.
PERINGATAN: Anda bertanggung jawab sendiri untuk memperbaiki kesalahan pemformatan kode jika
Anda memilih untuk menyalin dan menempelkan kode berikut ini dari format PDF/word.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 8 of 13 www.netacad.com
FINAL TEST - Skills Assessment

###############################################################
# This program:
# - Asks the user to enter an access token or use the hard coded access token.
# - Lists the user's Webex Teams rooms.
# - Asks the user which Webex Teams room to monitor for "/location" requests.
# - Monitors the selected Webex Team room every second for "/location" messages.
# - Discovers GPS coordinates for the "location" using MapQuest API.
# - Discovers the date and time of the next ISS flyover over the "location" using the
ISS API
# - Formats and sends the results back to the Webex Team room.
# # The student
will:
# 1. Import libraries for requests, json, and time.
# 2. Complete the if statement to ask the user for the Webex access token.
# 3. Provide the URL to the Webex Teams room API.
# 4. Create a loop to print the type and title of each room.
# 5. Provide the URL to the Webex Teams messages API.
# 6. Provide your MapQuest API consumer key.
# 7. Provide the URL to the MapQuest address API.
# 8. Provide the MapQuest key values for latitude and longitude.
# 9. Provide the URL to the ISS pass times API.
# 10. Provide the ISS key values risetime and duration.
# 11. Convert the risetime epoch value to a human readable date and time.
# 12. Complete the code to format the response message.
# 13. Complete the code to post the message to the Webex Teams room.
###############################################################

# 1. Import libraries for requests, json, and time.


import json
import requests
import time

# 2. Complete the if statement to ask the user for the Webex access token.
choice = input("Do you wish to use the hard-coded Webex token? (y/n) ")
if choice == 'y':
token = input("Your Webex Teams Access Token? ")
accessToken = "Bearer {}".format(token) else:
accessToken = "Bearer
NjQxZTUxZTEtNjQ5MC00YWNmLWE0YTYtODhhMTFmMDhjODY2N2I5MWZjZDYt
NDBk _P0A1_9e2858ad-dbc7-45d0-8184-304acabb5516"

# 3. Provide the URL to the Webex Teams room API. r =


requests.get("https://webexapis.com/v1/rooms",
headers = {"Authorization": accessToken}
)

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 9 of 13 www.netacad.com
FINAL TEST - Skills Assessment

#####################################################################################
# DO NOT EDIT ANY BLOCKS WITH r.status_code if not r.status_code == 200: raise
Exception("Incorrect reply from Webex Teams API. Status code: {}. Text:
{}".format(r.status_code, r.text))
######################################################################################

# 4. Create a loop to print the type and title of each room.


print("List of rooms:") rooms = r.json()["items"] for room in rooms:
print(f'Room title: {room["title"]}, room type:
{room["type"]}')

######################################################################################
#
# SEARCH FOR WEBEX TEAMS ROOM TO MONITOR #
- Searches for user-supplied room name.
# - If found, print "found" message, else prints error.
# - Stores values for later use by bot.
# DO NOT EDIT CODE IN THIS BLOCK
######################################################################################
#

while True:
roomNameToSearch = input("Which room should be monitored for /location messages?
") roomIdToGetMessages = None

for room in rooms:


if(room["title"].find(roomNameToSearch) != -1):
print ("Found rooms with the word " + roomNameToSearch)
print(room["title"]) roomIdToGetMessages = room["id"]
roomTitleToGetMessages = room["title"] print("Found
room : " + roomTitleToGetMessagesmy) break

if(roomIdToGetMessages == None): print("Sorry, I didn't find any room with " +


roomNameToSearch + " in it.") print("Please try again...") else:
break

######################################################################################
# WEBEX TEAMS BOT CODE
# Starts Webex bot to listen for and respond to /location messages.
######################################################################################

while True:
time.sleep(1) GetParameters = { "roomId":
roomIdToGetMessages,
"max": 1
} # 5. Provide the URL to the Webex Teams
messages API. r =
requests.get("https://webexapis.com/v1/messages",

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 10 of 13 www.netacad.com
FINAL TEST - Skills Assessment

params = GetParameters, headers =


{"Authorization": accessToken} )

if not r.status_code == 200: raise Exception( "Incorrect reply from Webex Teams
API. Status code: {}. Text: {}".format(r.status_code, r.text))

json_data = r.json() if len(json_data["items"]) == 0:


raise Exception("There are no messages in the room.")

messages = json_data["items"] message


= messages[0]["text"]
print("Received message: " +
message)

if message.find("/") == 0:
location = message[1:]
# 6. Provide your MapQuest API consumer key.
mapsAPIGetParameters = {
"location": location,

"key": "yQTJquGPB1KKcqVCBepg4IpPsUviF9sp"
}
# 7. Provide the URL to the MapQuest address API.
r =
requests.get("https://www.mapquestapi.com/geocoding/v1/address",
params = mapsAPIGetParameters
)
json_data = r.json()

if not json_data["info"]["statuscode"] == 0:
raise Exception("Incorrect reply from MapQuest API. Status code:
{}".format(r.statuscode))

locationResults = json_data["results"][0]["providedLocation"]["location"]
print("Location: " + locationResults)

# 8. Provide the MapQuest key values for latitude and longitude.


locationLat =
json_data["results"][0]["locations"][0]["latLng"]["lat"]
locationLng =
json_data["results"][0]["locations"][0]["latLng"]["lng"]
print("Location GPS coordinates: " + str(locationLat) + ", " +
str(locationLng))

issAPIGetParameters = {
"lat": locationLat,
"lon": locationLng
} # 9. Provide
the URL to the ISS pass times API.

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 11 of 13 www.netacad.com
FINAL TEST - Skills Assessment

r = requests.get("http://api.open-notify.org/iss/v1/",
params = issAPIGetParameters
)

json_data = r.json()

if not "response" in json_data:


raise Exception("Incorrect reply from open-notify.org API. Status code:
{}. Text: {}".format(r.status_code, r.text))

# 10. Provide the ISS key values risetime and duration.

risetimeInEpochSeconds = json_data["response"][0]["risetime"]
durationInSeconds = json_data["response"][0]["duration"]

# 11. Convert the risetime epoch value to a human readable date and time.

time.strftime('%a %b %d %H:%M:%S %Y',


risetimeInFormattedString =
time.localtime(risetimeInEpochSeconds))

# 12. Complete the code to format the response message.


# Example responseMessage result: In Austin, Texas the ISS will fly over on Thu
Jun 18 18:42:36 2020 for 242 seconds.
responseMessage = "In {} the ISS will fly over on {} for {}
seconds.".format(locationResults, risetimeInFormattedString,
durationInSeconds)

print("Sending to Webex Teams: " +responseMessage)

# 13. Complete the code to post the message to the Webex Teams room.
HTTPHeaders = {

"Authorization": accessToken,
"Content-Type": "application/json"
}
PostData = {

"roomId": roomIdToGetMessages,
"text": roomTitleToGetMessages
}

r = requests.post("https://webexapis.com/v1/messages",

data = json.dumps(PostData),
headers = HTTPHeaders
)
if not r.status_code == 200:
raise Exception("Incorrect reply from Webex Teams API. Status code: {}.
Text: {}".format(r.status_code, r.text))

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 12 of 13 www.netacad.com
FINAL TEST - Skills Assessment

© Enter copyright date here - 2021 Cisco and/or its affiliates. All rights reserved. Cisco PublicPage 13 of 13 www.netacad.com

Anda mungkin juga menyukai