Not much to say about this I haven't already said. This tale appears to be a framing device to bring in the songs, which derive from an older, unknown source. Otherwise the repetitive action doesn't really accomplish anything. I have a couple of comments along the way.
23 Balaam said, “Build me seven altars here, and prepare seven bulls and seven rams for me.” 2 Balak did as Balaam said, and the two of them offered a bull and a ram on each altar.
No particular reason for this, but 7 is a common number in sorcery.
3 Then Balaam said to Balak, “Stay here beside your offering while I go aside. Perhaps the Lord will come to meet with me. Whatever he reveals to me I will tell you.” Then he went off to a barren height.
4 God met with him, and Balaam said, “I have prepared seven altars, and on each altar I have offered a bull and a ram.”
God apparently didn't already know this, he needed to be told about it.
5 The Lord put a word in Balaam’s mouth and said, “Go back to Balak and give him this word.”
6 So he went back to him and found him standing beside his offering, with all the Moabite officials. 7 Then Balaam spoke his message:
“Balak brought me from Aram,
the king of Moab from the eastern mountains.
‘Come,’ he said, ‘curse Jacob for me;
come, denounce Israel.’
8 How can I curse
those whom God has not cursed?
How can I denounce
those whom the Lord has not denounced?
9 From the rocky peaks I see them,
from the heights I view them.
I see a people who live apart
and do not consider themselves one of the nations.
10 Who can count the dust of Jacob
or number even a fourth of Israel?
Let me die the death of the righteous,
and may my final end be like theirs!”
11 Balak said to Balaam, “What have you done to me? I brought you to curse my enemies, but you have done nothing but bless them!”
12 He answered, “Must I not speak what the Lord puts in my mouth?”
13 Then Balak said to him, “Come with me to another place where you can see them; you will not see them all but only the outskirts of their camp. And from there, curse them for me.” 14 So he took him to the field of Zophim on the top of Pisgah, and there he built seven altars and offered a bull and a ram on each altar.
15 Balaam said to Balak, “Stay here beside your offering while I meet with him over there.”
16 The Lord met with Balaam and put a word in his mouth and said, “Go back to Balak and give him this word.”
17 So he went to him and found him standing beside his offering, with the Moabite officials. Balak asked him, “What did the Lord say?”
18 Then he spoke his message:
“Arise, Balak, and listen;
hear me, son of Zippor.
19 God is not human, that he should lie,
not a human being, that he should change his mind.
Does he speak and then not act?
Does he promise and not fulfill?
20 I have received a command to bless;
he has blessed, and I cannot change it.
Actually as we have seen God has changed his mind many times, often after Moses argues with him. He has also made numerous promises and prophecies which have not been fulfilled.
21 “No misfortune is seen in Jacob,
no misery observed[a] in Israel.
The Lord their God is with them;
the shout of the King is among them.
22 God brought them out of Egypt;
they have the strength of a wild ox.
KJV renders this as "unicorn." No, I don't know why.
23 There is no divination against[b] Jacob,
no evil omens against[c] Israel.
It will now be said of Jacob
and of Israel, ‘See what God has done!’
24 The people rise like a lioness;
they rouse themselves like a lion
that does not rest till it devours its prey
and drinks the blood of its victims.”
25 Then Balak said to Balaam, “Neither curse them at all nor bless them at all!”
26 Balaam answered, “Did I not tell you I must do whatever the Lord says?”
27 Then Balak said to Balaam, “Come, let me take you to another place. Perhaps it will please God to let you curse them for me from there.” 28 And Balak took Balaam to the top of Peor, overlooking the wasteland.
29 Balaam said, “Build me seven altars here, and prepare seven bulls and seven rams for me.” 30 Balak did as Balaam had said, and offered a bull and a ram on each altar.